Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. PHP
Code

Форматирование текущей даты и времени в PHP

by
Difficulty:BeginnerLength:MediumLanguages:

Russian (Pусский) translation by Anna Goorikova (you can also view the original English article)

Вы часто будете работать с датами и временем при разработке веб-сайтов. Например, вам может потребоваться показать последнюю измененную дату в сообщении или указать, как давно читатель написал комментарий. Возможно, вам также придется показывать обратный отсчет дней до специального события.

К счастью, PHP поставляется с некоторыми встроенными функциями даты и времени, которые помогут нам сделать все это и многое другое довольно легко.

В этом учебном пособии вы узнаете, как отформатировать текущую дату и время в PHP. Вы также узнаете, как получить временную метку из строки даты и как добавить и вычесть разные даты.

Получение даты и времени в строчном формате

date($ format, $timestamp) - одна из наиболее часто используемых функций даты и времени, доступных в PHP. Он принимает желаемый формат вывода для даты в качестве первого параметра и целое число как значение временной метки, которое необходимо преобразовать в заданный формат даты. Второй параметр является необязательным, и его отсутствие дает вывод текущей даты и времени в строчном формате на основе значения $format.

Параметр $format принимает ряд символов в качестве допустимых значений. Некоторые из этих символов имеют прямые значения: Y дает вам полное числовое значение года с 4 цифрами (2018), а y дает только две последние цифры текущего года (18). Аналогично, H даст вам час в 24-часовом формате с ведущими нулями, а h даст вам час в 12-часовом формате с ведущими нулями.

Вот некоторые из наиболее распространенных символов формата даты и их значений.

Символ Значение Пример
d день месяца с ведущими нулями 03 или 17
j день месяца без ведущих нулей 3 или 17
D день недели в виде трехбуквенной аббревиатуры Mon
l полный день недели Monday
m месяц как число с ведущими нулями 09 или 12
n месяц как число без ведущих нулей 9 или 12
M месяц как трехбуквенная аббревиатура Sep
F полное название месяца September
y двухзначный год 18
Y полное число года 2018

Существует множество других специальных символов для указания вывода для функции date(). Лучше всего проконсультироваться с таблицей символов формата в документации по функции date() для получения дополнительной информации о специальных случаях.

Давайте рассмотрим некоторые практические примеры функции date(). Мы можем использовать ее для получения текущего года, текущего месяца, текущего часа и т. д., Или мы можем использовать ее для получения полной строки даты.

Вы также можете использовать функцию date() для вывода времени. Вот некоторые из наиболее часто используемых символов формата времени:

Символ Значение Пример
g часы в 12-часовом формате без начальных нулей 1 или 12
h часы в 12-часовом формате с ведущими нулями 01 или 12
G часы в 24-часовом формате без начальных нулей 1 или 13
H часы в 24-часовом формате с ведущими нулями 01 или 13
a am/pm в нижнем регистре am
A am/pm в верхнем регистре AM
i минуты с ведущими нулями 09 или 15
s секунды с начальными нулями 05 или 30

И вот несколько примеров вывода форматированных строк времени.

Также важно избегать этих специальных символов, если вы хотите использовать их внутри своей строки даты.

Получение временной метки Unix

Иногда вам нужно получить значение текущей метки времени Unix в PHP. Это очень легко с помощью функции time(). Она возвращает целочисленное значение, которое описывает количество миллисекунд, прошедших с 1 января 1970 года в полночь (00:00:00) по Гринвичу.

Вы также можете использовать эту функцию для возврата туда и обратно во времени. Для этого все, что вам нужно сделать, - вычесть правильное количество секунд из текущего значения time(), а затем перевести полученное значение в нужную строку даты. Вот два примера:

Одна важная вещь, которую вы должны помнить, это то, что значение временной метки, возвращаемое time(), является агностическим часовым поясом и получает количество секунд с 1 января 1970 года в 00:00:00 по UTC. Это означает, что в определенный момент времени эта функция вернет то же значение в США, Европе, Индии или Японии.

Другой способ получить временную метку для конкретной даты - использовать функцию mktime($hour, $minute, $second, $month, $day, $year). Когда все параметры опущены, эта функция просто использует текущую локальную дату и время для вычисления значения временной метки. Эта функция также может использоваться с date() для генерации полезных строк даты и времени.

В принципе, time() может использоваться для перехода туда и обратно в течение некоторого периода времени, в то время как mktime() полезен, когда вы хотите перейти к определенному моменту времени.

Преобразование строки Datetime в метку времени

Функция strtotime($time, [$now = time()]) будет невероятно полезна, когда вы хотите преобразовать разные значения даты и времени из строкового формата в метку времени. Функция может анализировать почти все типы строк даты и времени в метках времени.

Вы должны обязательно проверить допустимые форматы времени, форматы даты, составные форматы даты и времени и относительные форматы даты и времени.

С относительными форматами даты и времени эта функция может легко преобразовывать часто используемые строки в допустимые значения метки времени. Следующие примеры должны помочь понять:

Добавление, вычитание и сравнение дат

Можно добавлять и вычитать определенные периоды времени к и от даты. Это можно сделать с помощью функций date_add() и date_sub(). Вы также можете использовать функцию date_diff(), чтобы вычесть две даты и вывести разницу между ними по годам, месяцам и дням или что-то еще.

Как правило, проще провести такую арифметику, связанную с датой и временем, в объектно-ориентированном стиле с классом DateTime, а не делать это процедурно. Мы попробуем оба эти стили, и вы сможете выбрать то, что вам больше нравится.

При использовании DateTime::diff() объект DateTime, на который вызывается метод diff(), вычитается из объекта DateTime, который передается методу diff(). Когда вы пишете код процедурного стиля, первый параметр даты вычитается из второго параметра даты.

И функция, и метод возвращают объект DateInterval(), представляющий разницу между двумя датами. Этот интервал можно отформатировать, чтобы дать конкретный результат, используя все символы, перечисленные в документации метода format().

Различие между объектно-ориентированным стилем и процедурным становится более очевидным при вычитании или добавлении временного интервала.

Вы можете создать экземпляр нового объекта DateTime с помощью конструктора DateTime(). Аналогично, вы можете создать экземпляр объекта DateInterval с помощью конструктора DateInterval(). Он принимает строку в качестве ее параметра. Интервальная строка начинается с P, что означает период. После этого вы можете указать каждый период с использованием целочисленного значения и символа, присвоенного определенному периоду. Для получения дополнительной информации вы должны проверить документацию DateInterval.

Вот пример, который иллюстрирует, как легко добавлять или вычитать даты и время в PHP.

Вы также можете сравнить даты на PHP с помощью операторов сравнения. Это может пригодиться время от времени. Давайте создадим счетчик рождественских дней, используя операторы сравнения и другие методы DateTime.

Мы начали с создания двух объектов DateTime для хранения текущего времени и даты Рождества этого года. После этого мы запускаем цикл while, чтобы добавить 1 год к рождественской дате 2018 года, пока настоящая дата не станет меньше, чем дата Рождества. Это будет полезно, когда код будет запущен 18 января 2024 года. Цикл while увеличит дату Рождества, если он меньше текущей даты во время запуска этого скрипта.

Наш рождественский счетчик теперь будет работать в течение многих десятилетий без проблем.

Последние мысли

В этом уроке мы научились выводить текущую дату и время в нужном формате с помощью функции date(). Мы также увидели, что date() также может использоваться для получения только текущего года, месяца и т. д. После этого мы узнали, как получить текущую временную метку или преобразовать действительную строку DateTime в метку времени. Наконец, мы узнали, как добавлять или вычитать период времени с разных дат.

Я попытался описать ключевые функции и методы DateTime. Вы обязательно должны взглянуть на документацию, чтобы прочитать о функциях, не описанных в учебнике. Если у вас есть какие-либо вопросы, не стесняйтесь, дайте мне знать в комментариях.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.