Описание string date ( string format [, int timestamp] )
Возвращает время, отформатированное в соответствии с аргументом format , используя метку времени, заданную аргументом timestamp или текущее системное время, если timestamp не задан. Другими словами, timestamp является необязательным и по умолчанию равен значению, возвращаемому функцией time() .
Замечание: Для большинства систем допустимыми являются даты с 13 декабря 1901, 20:45:54 GMT по 19 января 2038, 03:14:07 GMT. (Эти даты соответствуют минимальному и максимальному значению 32-битового целого со знаком). Для Windows допустимы даты с 01-01-1970 по 19-01-2038.
Таблица 1. В параметре format распознаются следующие символы
Символ в строке format
Описание
Пример возвращаемого значения
a
Ante meridiem или Post meridiem в нижнем регистре
am или pm
A
Ante meridiem или Post meridiem в верхнем регистре
AM или PM
B
Время в стадарте Swatch Internet
От 000 до 999
c
Дата в формате ISO 8601 (добавлено в PHP 5)
2004-02-12T15:19:21+00:00
d
День месяца, 2 цифры с ведущими нулями
от 01 до 31
D
Сокращенное наименование дня недели, 3 символа
от Mon до Sun
F
Полное наименование месяца, например January или March
от January до December
g
Часы в 12-часовом формате без ведущих нулей
От 1 до 12
G
Часы в 24-часовом формате без ведущих нулей
От 0 до 23
h
Часы в 12-часовом формате с ведущими нулями
От 01 до 12
H
Часы в 24-часовом формате с ведущими нулями
От 00 до 23
i
Минуты с ведущими нулями
00 to 59
I (заглавная i)
Признак летнего времени
1 , если дата соответствует летнему времени, иначе 0 otherwise.
j
День месяца без ведущих нулей
От 1 до 31
l (строчная ‘L’)
Полное наименование дня недели
От Sunday до Saturday
L
Признак високосного года
1 , если год високосный, иначе 0 .
m
Порядковый номер месяца с ведущими нулями
От 01 до 12
M
Сокращенное наименование месяца, 3 символа
От Jan до Dec
n
Порядковый номер месяца без ведущих нулей
От 1 до 12
O
Разница с временем по Гринвичу в часах
Например: +0200
r
Дата в формате RFC 2822
Например: Thu, 21 Dec 2000 16:01:07 +0200
s
Секунды с ведущими нулями
От 00 до 59
S
Английский суффикс порядкового числительного дня месяца, 2 символа
st , nd , rd или th . Применяется совместно с j
t
Количество дней в месяце
От 28 до 31
T
Временная зона на сервере
Примеры: EST , MDT .
U
Количество секунд, прошедших с начала Эпохи Unix (The Unix Epoch, 1 января 1970, 00:00:00 GMT)
См. также time()
w
Порядковый номер дня недели
От 0 (воскресенье) до 6 (суббота)
W
Порядковый номер недели года по ISO-8601, первый день недели — понедельник (добавлено в PHP 4.1.0)
Например: 42 (42-я неделя года)
Y
Порядковый номер года, 4 цифры
Примеры: 1999 , 2003
y
Номер года, 2 цифры
Примеры: 99 , 03
z
Порядковый номер дня в году (нумерация с 0)
От 0 до 365
Z
Смещение временной зоны в секундах. Для временных зон западнее UTC это отрицательное число, восточнее UTC — положительное.
От -43200 до 43200
Любые другие символы, встреченные в строке format , будут выведены в результирующую строку без изменений. Z всегда возвращает 0 при использовании gmdate() .
Пример 1. Примеры использования функции date()
// вывод дня недели, например Wednesday echo date ( «l» );
// вывод даты в формате: Wednesday 15th of January 2003 05:51:38 AM echo date ( «l dS 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 )); ?>
Избежать распознавания символа как форматирующего можно, если экранировать этот символ с помощью \ Если в сочетании с \ символ являееся специальным (например, \t ), следует добавлять еще один \ .
Пример 2. Экранирование символов в функции date()
// вывод: Wednesday the 15th echo date ( «l \\t\h\e jS» ); ?>
Функции date() и mktime() для вывода прошедших и будущих дат.
= 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()
// Предположим, что текущая дата March 10th, 2001, 5:16:18 pm
$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 z ‘ ); // 05-16-17, 10-03-01, 1631 1618 6 Fripm01 $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 15:16:08 MST 2001 $today = date ( ‘H:m:s \m \i\s\ \m\o\n\t\h’ ); // 17:03:17 m is month $today = date ( «H:i:s» ); // 17:16:17 ?>
Для форматирования дат на других языках используйте функции setlocale() и strftime() .
Источник
Дата и время в PHP
В распределенных системах, таких, как Интернет, время играет особую роль. Из-за незначительного расхождения системных часов игрок на рынке Forex может потерять десятки тысяч долларов в течение нескольких минут; система деловой разведки ошибется в составлении прогноза; серверы NNTP в процессе синхронизации потеряют важную информацию, нужную пользователю и т.д.
PHP-функции для работы с датой и временем
PHP содержит множество функций для работы с датой и временем. Наиболее употребимыми являются:
time() Возвращает текущее абсолютное время. Это число равно количеству секунд, которое прошло с полуночи 1 января 1970 года (с начала эпохи UNIX). getdate( ) Считывает информацию о дате и времени. Возвращает ассоциативный массив, содержащий информацию по заданному или по текущему (по умолчанию) времени. Массив содержит следующие элементы:
date() Форматирование даты и времени. Аргументы: строка формата и абсолютное время. Второй аргумент необязателен. Возвращает строку с заданной или текущей датой в указанном формате. Строка формата может содержать следующие коды:
a
Включено обозначение «am» или «pm»
A
Включено обозначение «AM» или «PM»
d
День месяца (01-31)
D
Сокращенное название дня недели (три буквы)
F
Полное название месяца
g
Часы (12-часовой формат без ведущих нулей)
G
Часы (24-часовой формат без ведущих нулей)
h
Часы (12-часовой формат)
H
Часы (24-часовой формат)
i
Минуты (00-59)
j
День месяца без ведущих нулей (1-31)
l
Полное название дня недели
L
Признак високосного года (0 или 1)
m
Месяц (01-12)
M
Сокращенное название месяца (три буквы)
n
Месяц (1-12)
s
Секунды (00-59)
t
Количество дней в данном месяце (от 28 до 31)
U
Абсолютное время
w
Номер дня недели (0 — воскресенье, 6 — суббота)
y
Год (два разряда)
Y
Год (четыре разряда)
z
День года (0-365)
Z
Смещение часового пояса в секундах (от -43200 до 43200)
Любая другая информация, включенная в строку формата, будет вставлена в возвращаемую строку. Если в строку формата нужно добавить символы, которые сами по себе являются кодами формата, то перед ними надо поставить обратную косую черту «\». Символы, которые становятся кодами формата при добавлении к ним обратной косой, нужно предварять двумя косыми. Например, если необходимо добавить в строку «n», то надо ввести «\\n», поскольку «\n» является символом новой строки.
Пример 2
РЕЗУЛЬТАТ ПРИМЕРА 2:
Сегодня 03.11.21 11:14
mktime() Возвращает абсолютное время, которое затем можно использовать с функциями date() или getdate() . Принимает до шести целочисленных аргументов в следующем порядке:
часы минуты секунды месяц день месяца год
Пример 3
РЕЗУЛЬТАТ ПРИМЕРА 3:
22 January 1971, at 1.30 pm, Friday
checkdate() Проверка правильности даты. Аргументы: месяц, день, год. Возвращает true , если дата правильная, т.е. месяц — целое число от 1 до 12; день — целое число, не превышающее общего количества дней в данном месяце. При этом високосные годы обрабатываются корректно; год — целое число от 1 до 32767.
Внимание! Дата может находиться в допустимом диапазоне, но остальные функции работы с датами не примут это значение. Так, нельзя использовать mktime() для годов до 1902, а также следует использовать ее осторожно для годов до 1970.
strftime() Формирование локальной даты и времени. Аргументы: строка формата и абсолютное время. Второй аргумент необязателен. Возвращает строку с заданной или текущей датой в указанном формате. При этом названия месяцев и дней недели извлекается из локали, выбранной с помощью функции setlocate() . Строка формата может содержать следующие коды:
%a
Сокращенное название дня недели
%A
Полное название дня недели
%b
Сокращенное название месяца
%B
Полное название месяца
%c
Предпочтительный формат даты и времени
%C
Номер века
%d
День месяца (1-31)
%D
То же, что и %m/%d/%y
%e
Месяц (1-12)
%h
То же, что и %b
%H
Часы (24-часовой формат)
%I
Часы (12-часовой формат)
%j
День года (0-365)
%m
Месяц (1-12)
%M
Минуты
%n
Символ новой строки
%p
Включено обозначение «am» или «pm»
%r
Время с использованием a.m./p.m.-нотации
%R
Время в 24-часовом формате
%S
Секунды (00-59)
%t
Символ табуляции
%T
То же, что и %H:%M:%S
%u
Номер дня недели (1 — понедельник, 7 — воскресенье)
%U
Номер недели. Отсчет начинается с первого воскресенья года
%V
Номер недели по ISO 8601:1988. Первая неделя должна иметь не менее четырех дней, а понедельник считается первым днем
%W
Номер недели. Отсчет начинается с первого понедельника года
%w
Номер дня недели (0 — воскресенье, 6 — суббота)
%x
Предпочтительный формат даты без времени
%X
Предпочтительный формат времени без даты
%y
Год (два разряда)
%Y
Год (четыре разряда)
%Z
Часовой пояс (имя или сокращение)
%%
Символ «%»
Любая другая информация, включенная в строку формата, будет вставлена в возвращаемую строку.
Пример 4
РЕЗУЛЬТАТ ПРИМЕРА 4:
Wednesday 03 November 2021 11:14 Сегодня Wednesday 03 November 2021 11:14:25 MSK
Возвращает строку даты, преобразованной согласно переданному формату.
Список параметров
Только для процедурного стиля: объект DateTime , возвращаемый date_create() .
Шаблон результирующей строки ( string ) с датой. Смотрите параметры форматирования ниже. Также существует несколько предопределённых констант даты/времени, которые могут быть использованы вместо этих параметров. Например: DATE_RSS заменяет шаблон ‘D, d M Y H:i:s’ .
В параметре format распознаются следующие символы
Символ в строке format
Описание
Пример возвращаемого значения
День
—
—
d
День месяца, 2 цифры с ведущим нулём
от 01 до 31
D
Текстовое представление дня недели, 3 символа
от Mon до Sun
j
День месяца без ведущего нуля
от 1 до 31
l (строчная ‘L’)
Полное наименование дня недели
от Sunday до Saturday
N
Порядковый номер дня недели в соответствии со стандартом ISO-8601
от 1 (понедельник) до 7 (воскресенье)
S
Английский суффикс порядкового числительного дня месяца, 2 символа
st , nd , rd или th . Применяется совместно с j
w
Порядковый номер дня недели
от 0 (воскресенье) до 6 (суббота)
z
Порядковый номер дня в году (начиная с 0)
От 0 до 365
Неделя
—
—
W
Порядковый номер недели года в соответствии со стандартом ISO-8601; недели начинаются с понедельника
Например: 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 ) принадлежит предыдущему или следующему году; тогда будет использован год этой недели.
Примеры: 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
Микросекунды. Учтите, что date() всегда будет возвращать 000000 , т.к. она принимает целочисленный ( int ) параметр, тогда как DateTime::format() поддерживает микросекунды, если DateTime создан с ними.
Например: 654321
v
Миллисекунды. Замечание такое же как и для u .
Пример: 654
Часовой пояс
—
—
e
Идентификатор часового пояса
Примеры: UTC , GMT , Atlantic/Azores
I (заглавная i)
Признак летнего времени
1 , если дата соответствует летнему времени, 0 в противном случае.
O
Разница с временем по Гринвичу без двоеточия между часами и минутами
Например: +0200
P
Разница с временем по Гринвичу с двоеточием между часами и минутами
Например: +02:00
p
То же, что и P , но возвращает Z вместо +00:00
Например: +02:00
T
Аббревиатура часового пояса, если известна; в противном случае смещение по Гринвичу.
Примеры: EST , MDT , +05
Z
Смещение часового пояса в секундах. Для часовых поясов, расположенных западнее UTC, возвращаются отрицательные числа, а для расположенных восточнее UTC — положительные.
от -43200 до 50400
Полная дата/время
—
—
c
Дата в формате стандарта ISO 8601
2004-02-12T15:19:21+00:00
r
Дата в формате » RFC 2822
Например: Thu, 21 Dec 2000 16:01:07 +0200
U
Количество секунд, прошедших с начала Эпохи Unix (1 января 1970 00:00:00 GMT)
Смотрите также time()
Любые другие символы, встреченные в строке-шаблоне, будут выведены в результирующую строку без изменений. Z всегда возвращает 0 при использовании gmdate() .
Поскольку рассматриваемая функция принимает в качестве параметра временные метки типа int , форматирующий символ u будет полезен только при использовании функции date_format() и пользовательских меток времени, созданных с помощью функции date_create() .
Возвращаемые значения
Возвращает строку с отформатированной датой в случае успешного выполнения.