Форматы даты
На этой странице описаны форматы даты, которые понимает парсер функций strtotime(), DateTime и date_create().
Описание | Формат | Примеры |
---|---|---|
daysuf (суффикс порядкового числительного дня месяца) |
"st" | "nd" | "rd" | "th" | |
dd (день месяца без ведущих нулей) |
([0-2]?[0-9] | "3"[01]) daysuf ? |
"7th", "22nd", "31" |
DD (день месяца, 2 цифры с ведущим нулем) |
"0" [0-9] | [1-2][0-9] | "3" [01] | "07", "31" |
m (полное или сокращенное название месяца) |
'january' | 'february' | 'march' | 'april' | 'may' | 'june' | 'july' | 'august' | 'september' | 'october' | 'november' | 'december' | 'jan' | 'feb' | 'mar' | 'apr' | 'may' | 'jun' | 'jul' | 'aug' | 'sep' | 'sept' | 'oct' | 'nov' | 'dec' | "I" | "II" | "III" | "IV" | "V" | "VI" | "VII" | "VIII" | "IX" | "X" | "XI" | "XII" | |
M (сокращенное название месяца) |
'jan' | 'feb' | 'mar' | 'apr' | 'may' | 'jun' | 'jul' | 'aug' | 'sep' | 'sept' | 'oct' | 'nov' | 'dec' | |
mm (порядковый номер месяца) |
"0"? [0-9] | "1"[0-2] | "0", "04", "7", "12" |
MM (порядковый номер месяца, 2 цифры с ведущим нулем) |
"0" [0-9] | "1"[0-2] | "00", "04", "07", "12" |
y (порядковый номер года) |
[0-9]{1,4} | "00", "78", "08", "8", "2008" |
yy (порядковый номер года, 2 цифры) |
[0-9]{2} | "00", "08", "78" |
YY (порядковый номер года, 4 цифры) |
[0-9]{4} | "2000", "2008", "1978" |
Описание | Формат | Примеры |
---|---|---|
Месяц и день в американской нотации | mm "/" dd |
"5/12", "10/27" |
Месяц, день и год в американской нотации | mm "/" dd "/" y |
"12/22/78", "1/17/2006", "1/17/6" |
4 цифры года, месяц и день со слешем-разделителем | YY "/" mm "/" dd |
"2008/6/30", "1978/12/22" |
4 цифры года и месяц (GNU) | YY "-" mm |
"2008-6", "2008-06", "1978-12" |
Год, месяц и день с дефисом-разделителем | y "-" mm "-" dd |
"2008-6-30", "78-12-22", "8-6-21" |
День, месяц и 4 цифры года с разделителем в виде точки, символа табуляции или дефиса | dd [.\t-] mm [.-] YY |
"30-6-2008", "22.12.1978" |
День, месяц и 2 цифры года с разделителем в виде точки или символа табуляции | dd [.\t] mm "." yy |
"30.6.08", "22.12.78" |
День, название месяца и год | dd ([ \t.-])* m ([ \t.-])* y |
"30-June 2008", "22DEC78", "14 III 1879" |
Название месяца и 4 цифры года (день месяца сбрасывается на 1) | m ([ \t.-])* YY |
"June 2008", "DEC1978", "March 1879" |
4 цифры года и название месяца (день месяца сбрасывается на 1) | YY ([ \t.-])* m |
"2008 June", "1978-XII", "1879.MArCH" |
Название месяца, день и год | m ([ .\t-])* dd [,.stndrh\t ]+ y |
"July 1st, 2008", "April 17, 1790", "May.9,78" |
Название месяца и день | m ([ .\t-])* dd [,.stndrh\t ]* |
"July 1st,", "Apr 17", "May.9" |
День и название месяца | d ([ .\t-])* m |
"1 July", "17 Apr", "9.May" |
Сокращенное название месяца, день и год | M "-" DD "-" y |
"May-09-78", "Apr-17-1790" |
Год, сокращенное название месяца и день | y "-" M "-" DD |
"78-Dec-22", "1814-MAY-17" |
Только год | YY |
"1978", "2008" |
Только название месяца | m |
"March", "jun", "DEC" |
Описание | Формат | Примеры |
---|---|---|
8 цифр (год, месяц и день) | YY MM DD |
"15810726", "19780417", "18140517" |
8 цифр (год, месяц и день) со слешем-разделителем | YY "/" MM "/" DD |
"2008/06/30", "1978/12/22" |
2 цифры года, месяц и день с дефисом-разделителем | yy "-" MM "-" DD |
"08-06-30", "78-12-22" |
4 цифры года с необязательным знаком, месяц и день | [+-]? YY "-" MM "-" DD |
"-0002-07-26", "+1978-04-17", "1814-05-17" |
Замечание:
Форматы
y
иyy
для годов меньше 100 обрабатываются в исключительных случаях при использовании символовy
илиyy
. Если год попадает в диапазон 0-69 (включительно), то к нему добавляется 2000. Если же год принадлежит диапазону 70-99 (включительно), то к нему добавляется 1900. Это означает, что дата "00-01-01" интерпретируется как "2000-01-01".
Замечание:
Формат "День, месяц и 2 цифры года с разделителем в виде точки или символа табуляции" (
dd
[.\t]mm
"."yy
) работает только для годов из диапазона 61-99 (включительно). За пределами этого диапазона отдается предпочтение формату времени "HH
[.:]MM
[.:]SS
".
Замечание:
Формат "Только год" задействуется только в случае, если строка времени была найдена. В противном случае отдается предпочтению формату
HH
MM
.
Замечание:
Возможен выход за границы диапазона форматов
dd
иDD
. День месяца с порядковым номером 0 подразумевает последний день предыдущего месяца в результате выхода за границы диапазона. Согласно написанному "2008-08-00" равносильно "2008-07-31", а "2008-06-31" соответствует "2008-07-01" (в июне всего 30 дней).Обратите внимание, что с PHP 5.1.0 диапазон дней ограничен 0-31, как указано выше регулярным выражением. Так что, например, "2008-06-32" - некорректная дата.
Также допускается выход за границы диапазона для форматов
mm
иMM
со значением 0. Значение месяца 0 соответствует декабрю предыдущего года. Например дата "2008-00-22" равносильна "2007-12-22".Если учесть два предыдущих замечания и выход за границы диапазона дней и месяцев, получим следующее: дата "2008-00-00" в первую очередь преобразуется в "2007-12-00", которая будет преобразована в "2007-11-30". То же случится с датой "0000-00-00", которая будет преобразована к "-0001-11-30" (-1-й год в календаре ISO 8601 и 2 год до н.э. по григорианскому календарю).