Для работы с датами в PHP применяются различные функции. Мы начнем изучение с функции time .
Функция time, формат timestamp
Функция time возвращает разницу в секундах между 1-го января 1970 года и текущим моментом времени . Такое представление даты называется форматом timestamp .
Зачем нужен timestamp?
Время в формате timestamp используется для того, чтобы найти разницу между датами в секундах.
К примеру, у меня есть timestamp за 1-го января текущего года и timestamp за текущий момент времени . Я отниму один от другого и получу разницу между этими моментами в секундах . Поделю эту разницу на 60 и получу разницу в минутах (так как в минуте 60 секунд). Поделю еще на 60 - и получу разницу в часах. И так далее.
С помощью функции time мы можем получить только текущий момент времени. Чтобы получить timestamp за любую дату следует использовать функцию mktime :
Функция mktime
Функция mktime работает аналогично функции time , но, в отличие от нее, принимает параметры: mktime(час, минута, секунда, месяц, день, год) (обратите внимание на то, что месяц и день переставлены местами ). Посмотрите примеры работы:
Параметры можно опускать с конца . Если мы не напишем год (последний параметр) - то автоматически возьмется текущий год, если не напишем еще и день (предпоследний параметр) - то возьмется текущий день и текущий год. И так далее:
Решим типичную задачу на time и mktime . Пусть нам нужно найти разницу в секундах между текущим моментом времени и полуднем (12 часов, 0 минут, 0 секунд) 1-го февраля (февраль - это месяц номер 2) 2000 года:
Полученная разница в секундах будет выглядеть так: 612717139 (обновите страницу и это число поменяется).
Вооружившись знаниями о том, что такое формат timestamp (он нам еще понадобится в дальнейшем), изучим более полезные функции для работы с датами, например, функцию date.
Функция date
Функция date выводит текущие дату и время в заданном формате.
Формат задается управляющими командами (английскими буквами), при этом можно вставлять любые разделители между ними (дефисы, двоеточие и так далее).
Команды (заглавные буквы отличаются от обычных , обратите внимание!):
- U – количество секунд, прошедших с 1 января 1970 года (то есть timestamp).
- z – номер дня от начала года.
- Y – год, 4 цифры.
- y - год, две цифры.
- m – номер месяца (с нулем спереди).
- n – номер месяца без нуля впереди.
- d – номер дня в месяце, всегда две цифры (то есть первая может быть нулем).
- j – номер дня в месяце без предваряющего нуля.
- w – день недели (0 - воскресенье, 1 - понедельник и т.д.).
- h – часы в 12-часовом формате.
- H – часы в 24-часовом формате.
- i – минуты.
- s – секунды.
- L – 1, если високосный год, 0, если не високосный.
- W – порядковый номер недели года.
- t – количество дней в указанном месяце.
Примеры работы с date:
Второй параметр функции date
Функция date имеет второй необязательный параметр , который принимает момент времени в формате timestamp. Если передать этот параметр, то функция date отформатирует не текущий момент времени, а тот, который передан вторым параметром. Этот timestamp можно получить, к примеру, через mktime (но не обязательно):
Этим можно воспользоваться, чтобы узнать номер дня недели за определенную дату - просто передадим ее вторым параметром с помощью функции mktime , а первым параметром поставим управляющий символ "w" :
Функция strtotime
Следующая полезная функция, которую мы разберем, называется strtotime.
Функция strtotime - это аналог функции mktime (тоже возвращает timestamp), только в отличие от нее принимает дату в более свободном формате.
К примеру, я могу передать ей строку "2025-12-31" и функция сама разберет, где тут год, где месяц, а где день, и вернет эту дату в формате timestamp.
Что можно делать еще: можно написать так - strtotime("now") - и мы получим текущий момент времени, или так - strtotime("next Monday") - и мы получим следующий понедельник (Monday по-английски "понедельник").
Все форматы можно посмотреть .
Примеры работы:
Следующий код вернет дату предыдущего понедельника:
Как добавить или отнять дату
Чтобы отнять или прибавить к дате определенный промежуток времени, следует пользоваться комбинацией из трех функций: date_create - она подготавливает дату к работе (дата должна быть в формате год-месяц-день) создавая так называемый объект дата , с которым производятся дальнейшие манипуляции, date_modify - она прибавляет или отнимает, date_format - она выводит получившуюся дату в заданном формате. Чтобы вникнуть в работу с этими функциями изучите примеры ниже.
Пример 1
Давайте создадим объект с датой за 2025 год, 12 месяц, 31 день, затем прибавим к ней 1 день и выведем в формате "день.месяц.год"
Результат выполнения кода:
Пример 2
Давайте создадим объект с датой за 2025 год, 12 месяц, 31 день, затем прибавим к ней 3 дня и выведем в формате "день.месяц.год"
Результат выполнения кода:
Пример 3
Давайте создадим объект с датой за 2025 год, 12 месяц, 31 день, затем прибавим к ней 3 дня и 1 месяц и выведем в формате "день.месяц.год"
Результат выполнения кода:
Пример 4
Давайте создадим объект с датой за 2025 год, 1 месяц, 1 день, затем отнимем от нее 1 день и выведем в формате "день.месяц.год"
Результат выполнения кода:
Что вам делать дальше:
Приступайте к решению задач по следующей ссылке: задачи к уроку .
Когда все решите - переходите к изучению новой темы.
Введение в ООП
-
Урок №
новая вкладка с new.code.mu
Введение -
Урок №
новая вкладка с new.code.mu
Свойства -
Урок №
новая вкладка с new.code.mu
Методы -
Урок №
новая вкладка с new.code.mu
Свойства и $this -
Урок №
новая вкладка с new.code.mu
Методы и $this -
Урок №
новая вкладка с new.code.mu
public private -
Урок №
новая вкладка с new.code.mu
Конструктор -
Урок №
новая вкладка с new.code.mu
Геттеры сеттеры -
Урок №
новая вкладка с new.code.mu
Свойства только для чтения -
Урок №
новая вкладка с new.code.mu
Один класс - один файл -
Урок №
новая вкладка с new.code.mu
Объекты в массиве -
Урок №
новая вкладка с new.code.mu
Начальные значения свойств в конструкторе
В этом уроке мы рассмотрим функцию date().
PHP функция date() используется для форматирования времени и/или даты.
Синтаксис
Синтаксис вызова функции:
Date($format, $timestamp);
$format — шаблон по которому будет получена дата, $timestamp — представляет собой метку времени, по умолчанию равную текущему локальному времени, если timestamp не указан. Другими словами, значение по умолчанию равно результату функции time(). В следующей таблице подробно рассмотрен синтаксис параметра format
Символ в строке format | Описание | Пример возвращаемого значения |
---|---|---|
День | — | — |
d | День месяца, 2 цифры с ведущим нулём | от 01 до 31 |
D | Текствое представление дня недели, 3 символа | от Mon до Sun |
j | День месяца без ведущего нуля | от 1 до 31 |
l (строчная ‘L’) | Полное наименование дня недели | от Sunday доSaturday |
N | Порядковый номер дня недели в соответствии со стандартом ISO-8601 (добавлен в версии PHP 5.1.0) | от 1 (понедельник) до7 (воскресенье) |
S | Английский суффикс порядкового числительного дня месяца, 2 символа | st , nd , rd или th . Применяется совместно с j |
w | Порядковый номер дня недели | от 0 (воскресенье) до 6 (суббота) |
z | Порядковый номер дня в году (начиная с 0) | От 0 до 365 |
Неделя | — | — |
W | Порядковый номер недели года в соответствии со стандартом ISO-8601; недели начинаются с понедельника (добавлено в версии PHP 4.1.0) | Например: 42 (42-я неделя года) |
Месяц | — | — |
F | Полное наименование месяца, например January или March | от January доDecember |
m | Порядковый номер месяца с ведущим нулём | от 01 до 12 |
M | Сокращенное наименование месяца, 3 символа | от Jan до Dec |
n | Порядковый номер месяца без ведущего нуля | от 1 до 12 |
t | Количество дней в указанном месяце | от 28 до 31 |
Год | — | — |
L | Признак високосного года | 1 , если год високосный, иначе 0 . |
o | Номер года в соответствии со стандартом ISO-8601. Имеет то же значение, что и Y , кроме случая, когда номер недели ISO (W ) принадлежит предыдущему или следующему году; тогда будет использован год этой недели. (добавлен в версии PHP 5.1.0) | Примеры: 1999 или 2003 |
Y | Порядковый номер года, 4 цифры | Примеры: 1999 ,2003 |
y | Номер года, 2 цифры | Примеры: 99 , 03 |
Время | — | — |
a | Ante meridiem (англ. «до полудня») или Post meridiem (англ. «после полудня») в нижнем регистре | am или pm |
A | Ante meridiem или Post meridiem в верхнем регистре | AM или PM |
B | Время в формате Интернет-времени (альтернативной системы отсчета времени суток) | от 000 до 999 |
g | Часы в 12-часовом формате без ведущего нуля | от 1 до 12 |
G | Часы в 24-часовом формате без ведущего нуля | от 0 до 23 |
h | Часы в 12-часовом формате с ведущим нулём | от 01 до 12 |
H | Часы в 24-часовом формате с ведущим нулём | от 00 до 23 |
i | Минуты с ведущим нулём | от 00 до 59 |
s | Секунды с ведущим нулём | от 00 до 59 |
u | Микросекунды (добавлено в версии PHP 5.2.2) | Например: 654321 |
Временная зона | — | — |
e | Код шкалы временной зоны(добавлен в версии PHP 5.1.0) | Примеры: UTC ,GMT ,Atlantic/Azores |
I (заглавная i) | Признак летнего времени | 1 , если дата соответствует летнему времени,0 в противном случае. |
O | Разница с временем по Гринвичу, в часах | Например: +0200 |
P | Разница с временем по Гринвичу с двоеточием между часами и минутами (добавлено в версии PHP 5.1.3) | Например: +02:00 |
T | Аббревиатура временной зоны | Примеры: EST ,MDT … |
Z | Смещение временной зоны в секундах. Для временных зон, расположенных западнее UTC возвращаются отрицательные числа, а расположенных восточнее UTC — положительные. | от -43200 до50400 |
Полная дата/время | — | — |
c | Дата в формате стандарта ISO 8601 (добавлено в PHP 5) | 2004-02-12T15:19:21+00:00 |
r | Дата в формате » RFC 2822 | Например: Thu, 21 Dec 2000 16:01:07 +0200 |
U | Количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970 00:00:00 GMT) | Смотрите такжеtime() |
Рассмотрим примеры. Следующий код:
";
echo date("Y.m.d") . "
";
echo date("Y-m-d");
?>
2009/05/11 2009.05.11 2009-05-11
PHP Date() — Добавляем метку времени
Функция mktime() возвращает Unix метку времени для указанной даты. Эта метка времени содержит количество секунд начиная с Январь 1 1970 00:00:00 GMT до указанной даты. Синтаксис для mktime():
Mktime(hour,minute,second,month,day,year,is_dst);
Для того чтобы заглянуть на один день в будущее, нам надо просто добавить 1 к параметру day функции mktime(). Пример:
Данный код выведет:
Среди разнообразных задач программирования, различные манипуляции со значениями даты и времени встречаются достаточно часто. Редкая автоматизированная система, база данных может обойтись без сохранения информации о времени того или иного процесса. Помимо простейшего добавления даты в запись базы данных или отображения этой даты, встречаются множество задач вывода этих дат в различном виде, проверки соответствия текущего времени с заданным таймером, вычисление срока между двумя датами и многое другое.
Для удобства работы с датами каждый язык программирования имеет свои специальные типы данных для хранения значения даты и времени. Чаще всего это числовое значение, либо целое, либо с плавающей точкой.
В PHP работа с датой чаще всего сталкивается с UNIX TIMESTAMP. Здесь время хранится целым числом. Исчисление времени начинается с 1 января 1970 года. Поэтому, например, дата и время 11.12.2014 19:40:00, будет представлено числом 1418316000. Эта цифра показывает, сколько секунд прошло с нулевой даты 1 января 1970 года, названой Эпохой Unix.
Пример php-страницы, предоставляющий возможности преобразования данных представлен на сайте в разделе программ программой "Преобразование формата даты и времени" . Здесь можно сформировать нужную дату в формат UNIX TIMESTAMP, а так же привести этот формат в стандартный, понятный человеку вид.
Получение текущего времени и даты в PHP
Для получения текущего времени сервера используется функция
int time(void)
которая как раз вернет значение в формате unix timestamp.
echo time(); // вывод текущего времени в формате unix timestamp
На первый взгляд не очень удобный формат для человека, но, как известно, чем проще представление данных, тем быстрее выполняется обработка этих значений компьютером. Кроме того, хранение числа в базе данных намного экономичнее, чем какой-либо специальный формат. Так же, PHP работает со временем одинаково и на Unix и на Windows платформе, что обеспечивает возможность использовать код на любой из этих платформ.
Преобразование формата даты и времени в PHP
Простейший механизм, позволяющий преобразовать числовое значение даты на более понятные значения, предоставляется функцией:
array getdate()
Она возвращает ассоциативный массив, содержащий информацию о дате. Если параметр timestamp не указан, будут возвращены сведения о текущем времени. Этот массив содержит следующие значения:
Полученный массив, позволяет вывести значения нужном виде:
$date = 1418372345;
$date_mas = getdate($date);
echo
$date_mas["mday"
] . " . "
. $date_mas["mon"
] . " . "
. $date_mas["year"
]; // 12.12.2014
Так же для преобразования формата даты и времени можно воспользоваться функцией:
string date(string $template [, int $unix_timestamp])
Она предназначена для получения текущей даты unix timestamp в нужном формате. Строковый параметр $template определяет формат вывода. Параметром $unix_timestamp можно задать, с каким значением времени производится работа. Он необязательный, поэтому, если его не указать, будет использоваться текущая дата и время.
Формат задается следующими значениями:
a | "до" и "после" полудня: "am" или "pm" |
A | "до" и "после" полудня заглавными буквами: "AM" или "PM" |
d | день месяца 2 цифрами (если меньше 10, на первом месте ноль) (от 01 до 31) |
D | день недели 3 буквами. Например, "Mon" (понедельник) |
j | день месяца, 1-2 цифры без начальных нулей (от 1 до 31) |
F | название месяца. Например, "January" |
h | час, 12-часовой формат (от 01 до 12) |
H | час, 24-часовой формат (от 00 до 23) |
g | час, 12-часовой формат без нулей (от 1 до 12) |
G | час, 24-часовой формат без нулей (от 0 до 23) |
i | минуты (от 00 до 59) |
I (заглавная i) | 1, если действует переход на летнее время, иначе 0 |
L | 1, если год високосный, или 0 если не високосный |
B | время в формате Интернет-времени (альтернативной системы отсчета времени суток) (от 000 до 999) |
T | временная зона компьютера. Например, MDT |
l (строчная L) | день недели. Например, "Monday" |
m | месяц, две цифры с нулями (от 01 до 12) |
n | месяц, одна-две цифры без нулей (от 1 до 12) |
M | сокращенное наименование месяца. Например, "Jan" |
t | число дней в указанном месяце (от 28 до 31) |
s | секунды (от 0 до 59) |
S | англоязычный порядковый суффикс числа из двух букв ("st", "nd", "rd" или "th") |
U | целое число секунд, прошедших с момента начала эпохи UNIX |
y | год, цифровой, 2 цифры (14) |
Y | год, цифровой, 4 цифры (2014) |
z | порядковое число дня в году (от 0 до 365) |
Z | смешение временной зоны в секундах (от -43200 до 43200) |
N | порядковый номер дня недели от 1 (понедельник) до 7 (воскресенье) в соответствии со стандартом ISO-8601, (добавлен в версии PHP 5.1.0) |
w | порядковый номер дня недели от 0 (воскресенье) до 6 (суббота) |
W | порядковый номер недели года в соответствии со стандартом ISO-8601; недели начинаются с понедельника (добавлено в версии PHP 4.1.0) |
o | номер года в соответствии со стандартом ISO-8601. Имеет то же значение, что и Y, кроме случая, когда номер недели ISO (W) принадлежит предыдущему или следующему году; тогда будет использован год этой недели. (добавлен в версии PHP 5.1.0) |
e | код шкалы временной зоны. Например: UTC, GMT, Atlantic/Azores (добавлен в версии PHP 5.1.0) |
O | разница с временем по Гринвичу, в часах. Например: +0200 |
P | разница с временем по Гринвичу с двоеточием между часами и минутами. Например: +02:00 (добавлено в версии PHP 5.1.3) |
c | дата в формате стандарта ISO 8601. Например, 2014-12-12T15:19:21+00:00 (добавлено в PHP 5) |
r | дата в формате » RFC 2822. Например: Thu, 21 Dec 2000 16:01:07 +0200 |
U | количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970 00:00:00 GMT) |
Как видно из списка, с помощью этой функции можно получить очень много полезных данных о дате. Например:
$date = 1418372345; // исходное дата и время 12.12.2014 11:19:05
echo
date("d.m.Y"
, $date); // 12.12.2014 (дата)
echo
date("H:i:s"
, $date); // 11:19:05 (время)
echo
date("H:i"
, $date); // 11:19 (время)
echo
date("t"
, $date); // 31 (число дней в месяце)
echo
date("z"
, $date); // 345 (порядковый номер дня в году)
echo
date("l dS \of F Y h:i:s A"
, $date); // Friday 12th of December 2014 11:19:05 AM
Другие символы, входящие в шаблон, будут выведены в строке как есть. Если же потребуется ввести символ, который используется в функции как код формата, перед ними вставляется символ "\". Для значения "\n" (символ перехода на новую строку), следует указать "\\n". Таким образом, можно делать вывод целого сообщения, содержащего сведения о дате и времени:
echo date("Сегодня z-й день Y-го года" , $date); // Сегодня 345-й день 2014-го года
Преобразование даты и времени в формат timestamp
Для обратного преобразования даты из стандартного формата в числовое значение timestamp применяется функция:
int mktime(]]]]]])
Функция mktime() возвращает значение времени Unix, соответствующую дате и времени, заданным аргументами. Например:
$my_date = mktime (10, 30, 0, 12, 12, 2014);
Следует внимательно относится к порядку аргументов функции: часы, минуты, секунды, месяц, день, год.
Кроме простого формирования значения даты в timestamp, функцию mktime() можно использовать для арифметически вычисления с датами. Для этого просто можно ввести необходимые аргументы. Например, если указать 14 месяц, то в итоговом значении, месяц будет 2-й, а значение года увеличится на единицу:
$my_day = 12;
$my_month = 12;
$my_year = 2014;
$new_date = mktime(0, 0, 0, $my_month + 5, $my_day, $my_year);
echo
date("d.m.Y"
, $new_date); // 12.05.2015 (дата)
Аналогично можно поступать и с другими параметрами.
Проверка корректности даты в PHP
При работе с датами, особенно при формировании даты предложенной выше функцией mktime() необходимо учитывать корректность вводимой даты. Для этого в PHP используется функция:
bool checkdate(int month, int day, int year)
Возвращает true если дата, заданная аргументами, является правильной; иначе возвращает false. Дата считается правильной, если:
Год в диапазоне от 1 до 32767;
Месяц в диапазоне от 1 до 12;
День для заданного месяца с учетом високосного года указаны правильно.
Пример проверки даты:
$my_day = 32;
$my_month = 12;
$my_year = 2014;
if
(!checkdate($my_month, $my_day, $my_year))
echo
"Ошибка: дата указана некорректно"
;
Замечание: Для большинства систем допустимыми являются даты с 13 декабря 1901, 20:45:54 GMT по 19 января 2038, 03:14:07 GMT. (Эти даты соответствуют минимальному и максимальному значению 32-битового целого со знаком). Для Windows допустимы даты с 01-01-1970 по 19-01-2038.
Замечание: Для получения метки времени из строкового представления даты можно использовать функцию strtotime() . Кроме того, некоторые базы данных имеют собственные функции для преобразования внутреннего представления даты в метку времени (напрмер, функция MySQL UNIX_TIMESTAMP).
|
Замечание: Этот метод более надежен, чем вычитание и прибавление секунд к метке времени, так как mktime() учитывает любые неоднозначности в датах (переход на летнее/зимнее время и др.).
Приведем еще несколько примеров использования функции date() . Помните, что следует экранировать все символы, которые вы хотите видеть в результате работы функции без изменений. Это относится и к символам, которые в текущей версии PHP не распознаются как специальные, так как этим символам может быть назначено значение в следующих версиях. Используйте одинарные кавычки для предотвращения преобразования \n в перевод строки.
Пример 4. Форматирование с использованием date() |
(PHP 4, PHP 5, PHP 7)
date — Форматирует вывод системной даты/времени
Описание
String date (string $format [, int $timestamp = time() ])
Возвращает строку, отформатированную в соответствии с указанным шаблоном format . Используется метка времени, заданная аргументом timestamp , или текущее системное время, если timestamp не задан. Таким образом, timestamp является необязательным и по умолчанию равен значению, возвращаемому функцией time() .
Список параметров
Шаблон результирующей строки (string ) с датой. См. параметры форматирования ниже. Также существует несколько предопределенных констант даты/времени , которые могут быть использованы вместо этих параметров. Например: DATE_RSS заменяет шаблон "D, d M Y H:i:s" .
Символ в строке format | Описание | Пример возвращаемого значения |
---|---|---|
День | --- | --- |
d | День месяца, 2 цифры с ведущим нулём | от 01 до 31 |
D | Текстовое представление дня недели, 3 символа | от Mon до Sun |
j | День месяца без ведущего нуля | от 1 до 31 |
l (строчная "L") | Полное наименование дня недели | от Sunday до Saturday |
N | Порядковый номер дня недели в соответствии со стандартом ISO-8601 (добавлен в версии PHP 5.1.0) | от 1 (понедельник) до 7 (воскресенье) |
S | Английский суффикс порядкового числительного дня месяца, 2 символа | st , nd , rd или th . Применяется совместно с j |
w | Порядковый номер дня недели | от 0 (воскресенье) до 6 (суббота) |
z | Порядковый номер дня в году (начиная с 0) | От 0 до 365 |
Неделя | --- | --- |
W | Порядковый номер недели года в соответствии со стандартом ISO-8601; недели начинаются с понедельника (добавлено в версии PHP 4.1.0) | Например: 42 (42-я неделя года) |
Месяц | --- | --- |
F | Полное наименование месяца, например January или March | от January до December |
m | Порядковый номер месяца с ведущим нулём | от 01 до 12 |
M | Сокращенное наименование месяца, 3 символа | от Jan до Dec |
n | Порядковый номер месяца без ведущего нуля | от 1 до 12 |
t | Количество дней в указанном месяце | от 28 до 31 |
Год | --- | --- |
L | Признак високосного года | 1 , если год високосный, иначе 0 . |
o | Номер года в соответствии со стандартом ISO-8601. Имеет то же значение, что и Y , кроме случая, когда номер недели ISO (W ) принадлежит предыдущему или следующему году; тогда будет использован год этой недели. (добавлен в версии PHP 5.1.0) | Примеры: 1999 или 2003 |
Y | Порядковый номер года, 4 цифры | Примеры: 1999 , 2003 |
y | Номер года, 2 цифры | Примеры: 99 , 03 |
Время | --- | --- |
a | Ante meridiem (англ. "до полудня") или Post meridiem (англ. "после полудня") в нижнем регистре | am или pm |
A | Ante meridiem или Post meridiem в верхнем регистре | AM или PM |
B | Время в формате Интернет-времени (альтернативной системы отсчета времени суток) | от 000 до 999 |
g | Часы в 12-часовом формате без ведущего нуля | от 1 до 12 |
G | Часы в 24-часовом формате без ведущего нуля | от 0 до 23 |
h | Часы в 12-часовом формате с ведущим нулём | от 01 до 12 |
H | Часы в 24-часовом формате с ведущим нулём | от 00 до 23 |
i | Минуты с ведущим нулём | от 00 до 59 |
s | Секунды с ведущим нулём | от 00 до 59 |
u | Микросекунды (добавлено в версии PHP 5.2.2). Учтите, что date() всегда будет возвращать 000000 , т.к. она принимает целочисленный (integer ) параметр, тогда как DateTime::format() поддерживает микросекунды. | Например: 654321 |
Временная зона | --- | --- |
e | Код шкалы временной зоны(добавлен в версии PHP 5.1.0) | Примеры: UTC , GMT , Atlantic/Azores |
I (заглавная i) | Признак летнего времени | 1 , если дата соответствует летнему времени, 0 в противном случае. |
O | Разница с временем по Гринвичу, в часах | Например: +0200 |
P | Разница с временем по Гринвичу с двоеточием между часами и минутами (добавлено в версии PHP 5.1.3) | Например: +02:00 |
T | Аббревиатура временной зоны | Примеры: EST , MDT ... |
Z | Смещение временной зоны в секундах. Для временных зон, расположенных западнее UTC возвращаются отрицательные числа, а расположенных восточнее UTC - положительные. | от -43200 до 50400 |
Полная дата/время | --- | --- |
c | Дата в формате стандарта ISO 8601 (добавлено в PHP 5) | 2004-02-12T15:19:21+00:00 |
r | Дата в формате » RFC 2822 | Например: Thu, 21 Dec 2000 16:01:07 +0200 |
U | Количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970 00:00:00 GMT) | Смотрите также time() |
Любые другие символы, встреченные в строке-шаблоне, будут выведены в результирующую строку без изменений. Z всегда возвращает 0 при использовании gmdate() .
timestampЗамечание :
Поскольку рассматриваемая функция принимает в качестве параметра временные метки типа integer , форматирующий символ u будет полезен только при использовании функции date_format() и пользовательских меток времени, созданных с помощью функции date_create() .
Необязательный параметр timestamp представляет собой integer метку времени, по умолчанию равную текущему локальному времени, если timestamp не указан. Другими словами, значение по умолчанию равно результату функции time() .
Возвращаемые значения
Возвращает отформатированную строку с датой. При передаче нечислового значения в качестве параметра timestamp будет возвращено FALSE и вызвана ошибка уровня E_WARNING .
Список изменений
Версия | Описание |
---|---|
5.1.0 | Допустимым диапазоном дат для временных меток обычно являются даты с 13 декабря 1901, 20:45:54 GMT по 19 января 2038, 03:14:07 GMT. (Они соответствуют минимальному и максимальному значению 32-битного целого числа со знаком). Однако для PHP версии ниже 5.1.0 в некоторых операционных системах (например, Windows) этот диапазон был ограничен датами 01-01-1970 до 19-01-2038. |
5.1.0 | Теперь ошибки, связанные с временными зонами, генерируют ошибки уровня E_STRICT и E_NOTICE . |
5.1.1 | Для стандартных форматов даты/времени существуют специальные константы , которые могут быть указаны в качестве параметра format . |
Примеры
Пример #1 Примеры использования функции date()
// установка временной зоны по умолчанию. Доступно начиная с версии PHP 5.1
date_default_timezone_set
("UTC"
);
// выведет примерно следующее: Monday
echo
date
("l"
);
// выведет примерно следующее: Monday 8th of August 2005 03:12:46 PM
echo
date
("l jS \of F Y h:i:s A"
);
// выведет: July 1, 2000 is on a Saturday
echo
"July 1, 2000 is on a "
.
date
("l"
,
mktime
(0
,
0
,
0
,
7
,
1
,
2000
));
/* пример использования константы в качестве форматирующего параметра */
// выведет примерно следующее: Wed, 25 Sep 2013 15:28:57 -0700
echo
date
(DATE_RFC2822
);
// выведет примерно следующее: 2000-07-01T00:00:00+00:00
echo
date
(DATE_ATOM
,
mktime
(0
,
0
,
0
,
7
,
1
,
2000
));
?>
Чтобы запретить распознавание символа как форматирующего, следует экранировать его с помощью обратного слеша. Если экранированный символ также является форматирующей последовательностью, то следует экранировать его повторно.
Пример #2 Экранирование символов в функции date()
// выведет примерно следующее: Wednesday the 15th
echo
date
("l \t\h\e jS"
);
?>
Для вывода прошедших и будущих дат удобно использовать функции date() и mktime() .
Пример #3 Пример совместного использования функций date() и mktime()
$tomorrow
=
mktime
(0
,
0
,
0
,
date
("m"
) ,
date
("d"
)+
1
,
date
("Y"
));
$lastmonth
=
mktime
(0
,
0
,
0
,
date
("m"
)-
1
,
date
("d"
),
date
("Y"
));
$nextyear
=
mktime
(0
,
0
,
0
,
date
("m"
),
date
("d"
),
date
("Y"
)+
1
);
?>
Замечание :
Данный способ более надежен, чем простое вычитание и прибавление секунд к метке времени, поскольку позволяет при необходимости гибко осуществить переход на летнее/зимнее время.
Ещё несколько примеров использования функции date() . Важно отметить, что следует экранировать все символы, которые необходимо оставить без изменений. Это справедливо и для тех символов, которые в текущей версии PHP не распознаются как форматирующие, поскольку это может быть введено в следующих версиях. Для экранировании управляющих последовательностей (например, \n) следует использовать одинарные кавычки.
Пример #4 Форматирование с использованием date()
// Предположим, что текущей датой является 10 марта 2001, 5:16:18 вечера,
// и мы находимся во временной зоне Mountain Standard Time (MST)
$today
=
date
("F j, Y, g:i a"
);
// March 10, 2001, 5:16 pm
$today
=
date
("m.d.y"
);
// 03.10.01
$today
=
date
("j, n, Y"
);
// 10, 3, 2001
$today
=
date
("Ymd"
);
// 20010310
$today
=
date
("h-i-s, j-m-y, it is w Day"
);
// 05-16-18, 10-03-01, 1631 1618 6 Satpm01
$today
=
date
("\i\t \i\s \t\h\e jS \d\a\y."
);
// it is the 10th day.
$today
=
date
("D M j G:i:s T Y"
);
// Sat Mar 10 17:16:18 MST 2001
$today
=
date
("H:m:s \m \i\s\ \m\o\n\t\h"
);
// 17:03:18 m is month
$today
=
date
("H:i:s"
);
// 17:16:18
$today
=
date
("Y-m-d H:i:s"
);
// 2001-03-10 17:16:18 (формат MySQL DATETIME)
?>
Для форматирования дат на других языках используйте вместо date() функции setlocale() и strftime() .
Примечания
Замечание :
Для получения метки времени из строкового представления даты можно воспользоваться функцией strtotime() . Кроме того, некоторые базы данных имеют собственные функции для преобразования внутреннего представления даты в метку времени (например, функция MySQL » UNIX_TIMESTAMP).