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\t1978"
День, месяц и 2 цифры года с разделителем ввиде точки или символа табуляции
dd [.\t] mm "." yy
"30.6.08", "22\t12\t78"
День, наименование месяца и год
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"
Нотации ISO8601
Описание
Формат
Примеры
8 цифр (год, месяц и день)
YYMMDD
"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".
Замечание:
Формат "Только год" задействуется только в случае, если строка времени была найдена.
В противном случае отдается предпочтению формату HHMM.
Замечание:
Возможен выход за границы диапазона форматов dd и DD.
День месяца с порядковым номером 0 подразумевает последний день предыдущего месяца в результате выхода
за границы диапазона. Согласно написанному "2008-08-00" равносильно "2008-07-31", а "2008-06-31"
соответствует "2008-07-01" (в июне всего 30 дней).
Также допускается выход за границы диапазона для форматов 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 год до н.э. по григорианскому календарю).