PHP | Дата и время
В этом уроке рассмотрм, как на практике использовать функции PHP по получению даты и времени, а также рассмотрим способы вывода и форматирования даты и времени. Функции PHP, обрабатывающие дату и время, позволяют получать дату и время с того сервера, на котором выполняется сценарий. Также эти функции позволяют нам редактировать и форматировать полученные временные значения перед их отображением (выводом) на экран.
Функция PHP date()
Функция date()
выводит текущие дату и время в заданном формате. Также функция может конвертировать формат отметки времени (временная метка, метка времени или timestamp) в удобочитаемый формат.
Синтаксис
Параметры функции date():
format
- Обязательный. Задает формат метки времени
timestamp
- Необязательный. Задает отметку времени. По умолчанию текущая дата и время
Функция date()
возвращает строку, которая отформатирована в соответствии с указанным шаблоном format
. Параметр timestamp
задает метку времени. Если timestamp
не задан, тогда используется текущее системное время.
Примечание: Отметка времени — это последовательность символов, обозначающая дату и / или время, когда произошло определенное событие.
Обязательный параметр format
функции date()
указывает, как форматировать дату (или время). Формат задается управляющими командами (латиницей), при этом можно вставлять любые разделители между ними (дефисы, двоеточие и так далее).
Ниже представлена таблица с расшифровкой некоторых символов в строке format
:
Символ в строке format | Описание | Пример возвращаемого значения |
---|---|---|
День | — | — |
d | День месяца с 2-мя цифрами | от 01 до 31 |
D | День недели в текстовом формате, 3 символа | от Mon до Sun |
z | Порядковый номер дня в году (начиная с 0) | От 0 до 365 |
Месяц | — | — |
F | Полное название месяца, например, January или March | от January до December |
m | Порядковый номер месяца, 2 цифры | от 01 до 12 |
M | Сокращенное название месяца, 3 символа | от Jan до Dec |
Год | — | — |
Y | Порядковый номер года, 4 цифры | Примеры: 1999, 2019 |
y | Порядковый номер года, 2 цифры | Примеры: 99, 19 |
Время | — | — |
a | Ante meridiem (лат. «до полудня») или Post meridiem (лат. «после полудня») в нижнем регистре | am или pm |
A | Ante meridiem или Post meridiem в верхнем регистре | AM или PM |
g | Часы в 12-часовом формате | от 1 до 12 |
G | Часы в 24-часовом формате | от 0 до 23 |
h | Часы в 12-часовом формате | от 01 до 12 |
H | Часы в 24-часовом формате, 2 цифры | от 00 до 23 |
i | Минуты, 2 цифры | от 00 до 59 |
s | Секунды, 2 цифры | от 00 до 59 |
Ниже представлены некоторые примеры получения фактической информации о дате и времени:
Пример
Попробуй сам »<?php
echo "Отображение текущей даты: " . date('d-m-Y') . "<br>";
echo "Отображение текущего времени: " . date('H:i:s') . "<br>";
echo "Отображение текущей даты и времени: " . date('d-m-Y H:i:s') . "<br>";
echo "Отображение текущей даты и времени в длинном формате: " . date('d F Y, D - g:i:s A');
?>
Как всегда в футере выводить текущий год?
Используйте функцию date() для автоматического обновления года в футере вашего веб-сайта:
Пример
Попробуй сам »
Copyright © 2014-<?phpphp echo date("Y"); ?> Все права защищены.
Результат выполнения кода:
Примечание: Обратите внимание, что функция PHP date() вернет текущую дату / время сервера!
Определите свой часовой пояс
Если сервер, на котором расположен ваш сайт, находится в другой стране или настроен для другого часового пояса, то текущее время, возвращаемое функцией date(), будет отличаться от реального времени вашего часового пояса.
Итак, если вам нужно, чтобы время было правильным для вашего региона, вы можете установить часовой пояс, который хотите использовать.
Функция date_default_timezone_set()
устанавливает временную зону по умолчанию для всех функций даты и времени в скрипте.
Параметр timezone_identifier
— это идентификатор временной зоны.
Функция date_default_timezone_set()
устанавливает часовой пояс, который по умолчанию используется всеми дата/время функциями в сценарии. Чтобы изменить значение часового пояса для вашего веб-сайта, достаточно в начале скрипта задать функцию date_default_timezone_set()
, параметром которой будет служить название часового пояса.
Пример использования:
date_default_timezone_set( 'Europe/Moscow' );
В приведенном ниже примере для часового пояса устанавливается значение 'Europe/Moscow', а затем выводится текущее время в указанном формате:
Пример
Попробуй сам »<?php
date_default_timezone_set('Europe/Moscow');
echo "Текущее время в Москве " . date("h:i:sa");
date_default_timezone_set('Europe/Kiev');
echo "Текущее время в Киеве " . date("h:i:sa");
?>
Функция PHP mktime()
Необязательный параметр timestamp
функции date()
указывает временную метку. Если она не указано, будут использоваться текущая дата и время (как в примерах выше).
Но если вам нужно получить метку времени в прошлом или будущем, то сделать это можно с помощью функции mktime()
. Вам нужно указать нужную дату, и она возвращается с меткой времени Unix. Метка времени Unix содержит количество секунд между эпохой Unix (1 января 1970 г., 00:00:00 GMT) и указанным временем.
Синтаксис данной функции следующий:
Здесь используются следующие данные:
hour
- Количество часов, прошедших с начала дня, указанного параметрами month, day и year.
minute
- Количество минут, прошедших от начала часа, указанного параметром hour.
second
- Количество секунд, прошедших от начала минуты, указанной параметром minute.
month
- Количество месяцев, прошедших с конца предыдущего года.
day
- Количество дней, прошедших с конца предыдущего месяца.
year
- Номер года, может быть указан двумя или четырьмя цифрами.
Аргументы могут быть опущены в порядке справа налево. В этом случае их значения по умолчанию равны соответствующим компонентам локальной даты/времени.
Функцию mktime()
удобно использовать для выполнения арифметических операций с датами, так как она вычисляет верные значения при некорректных аргументах. Например, в следующем примере каждая строка выведет "Jan-01-1921":
Пример
Попробуй сам »<?php
echo date("M-d-Y", mktime(0, 0, 0, 12, 32, 1920));
echo date("M-d-Y", mktime(0, 0, 0, 13, 1, 1920));
echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 1921));
echo date("M-d-Y", mktime(0, 0, 0, 1, 1, 21));
?>
Если вы хотите получить дату завтрашнего дня, вы можете использовать следующий код:
Пример
Попробуй сам »<?php
echo "Сегодняшняя дата: " . date('d-m-Y') . "<br>";
echo "Завтра будет: " . date('d-m-Y', mktime(0, 0, 0, date('m'), date('d')+1, date('Y')));
?>
В приведенном примере мы использовали функцию mktime()
и добавили 1 день к параметру дня, чтобы получить дату завтрашнего дня.
Функция mktime()
переводит заданную дату в формат timestamp
. Формат timestamp - это количество секунд, прошедшее с 1-го января 1970 года по заданный момент времени.
В следующем примере получим разницу в секундах между 1970 годом и 31.12.2025, 12:59:59:
Пример
Попробуй сам »<?php
echo mktime(12, 59, 59, 31, 12, 2025);
?>
Результат выполнения кода:
Функция PHP strftime()
Функция PHP strtotime()
используется для преобразования удобочитаемой строки даты в метку времени Unix (количество секунд с 1 января 1970 года 00:00:00 по Гринвичу).
Синтаксис
Аргументы: строка формата и абсолютное время. Второй аргумент необязателен. Возвращает строку с заданной или текущей датой в указанном формате.
Следующий пример создает дату и время из функции strtotime()
:
Пример
Попробуй сам »<?php
$d=strtotime("10:30pm April 15 2020");
echo "Дата создания " . date("Y-m-d h:i:sa", $d);
?>
Результат выполнения кода:
PHP очень умен в преобразовании строки в дату, поэтому вы можете вводить различные значения. Например, можем из строки получить дату завтрашнего дня, следующей субботы и дату ровно через семь месяцев:
Пример
Попробуй сам »<?php
$d=strtotime("tomorrow");
echo "Завтра: " . date("Y-m-d h:i:sa", $d) . "<br>";
$d=strtotime("next Saturday");
echo "Следующая суббота: " . date("Y-m-d h:i:sa", $d) . "<br>";
$d=strtotime("+7 Months");
echo "Через 7 месяцев: " . date("Y-m-d h:i:sa", $d);
?>
В следующем примере вы можете посмотреть даты ближайших семи суббот начиная с момента изучения данного урока PHP:
Пример
Попробуй сам »<?php
$startdate = strtotime("Saturday");
$enddate = strtotime("+7 weeks", $startdate);
while ($startdate < $enddate) {
echo date("M d", $startdate) . "<br>";
$startdate = strtotime("+1 week", $startdate);
}
?>
Функция PHP time()
Функция PHP time()
возвращает текущее абсолютное время. Это число равно количеству секунд, которое прошло с полуночи 1 января 1970 года (с начала эпохи UNIX).
Пример использования time()
:
Пример
Попробуй сам »<?php
$nextWeek = time() + (7 * 24 * 60 * 60); // 7 дней; 24ч; 60мин; 60сек
echo 'Сегодня: '. date('Y-m-d') . "<br>";
echo 'Следующая неделя: '. date('Y-m-d', $nextWeek) . "<br>";
// или с помощью strtotime():
echo 'Следующая неделя: '. date('Y-m-d', strtotime('+1 week')) . "<br>";
?>
В следующем примере выводится количество дней до 1 июня от текущей даты:
Пример
Попробуй сам »<?php
$d1=strtotime("June 01");
$d2=ceil(($d1-time())/60/60/24);
echo "Осталось " . $d2 ." дней до 1 июня.";
?>
С помощью ceil
мы округлили полученное значение в большую сторону.