Day, month and four digit year, with dots, tabs or dashes
dd [.\t-] mm [.-] YY
"30-6-2008", "22.12.1978"
Day, month and two digit year, with dots or tabs
dd [.\t] mm "." yy
"30.6.08", "22\t12.78"
Day, textual month and year
dd ([ \t.-])* m ([ \t.-])* y
"30-June 2008", "22DEC78", "14 III 1879"
Textual month and four digit year (Day reset to 1)
m ([ \t.-])* YY
"June 2008", "DEC1978", "March 1879"
Four digit year and textual month (Day reset to 1)
YY ([ \t.-])* m
"2008 June", "1978-XII", "1879.MArCH"
Textual month, day and year
m ([ .\t-])* dd [,.stndrh\t ]+ y
"July 1st, 2008", "April 17, 1790", "May.9,78"
Textual month and day
m ([ .\t-])* dd [,.stndrh\t ]*
"July 1st,", "Apr 17", "May.9"
Day and textual month
d ([ .\t-])* m
"1 July", "17 Apr", "9.May"
Month abbreviation, day and year
M "-" DD "-" y
"May-09-78", "Apr-17-1790"
Year, month abbreviation and day
y "-" M "-" DD
"78-Dec-22", "1814-MAY-17"
Year (and just the year)
YY
"1978", "2008"
Textual month (and just the month)
m
"March", "jun", "DEC"
ISO8601 Notations
Description
Format
Examples
Eight digit year, month and day
YYMMDD
"15810726", "19780417", "18140517"
Four digit year, month and day with slashes
YY "/" MM "/" DD
"2008/06/30", "1978/12/22"
Two digit year, month and day with dashes
yy "-" MM "-" DD
"08-06-30", "78-12-22"
Four digit year with optional sign, month and day
[+-]? YY "-" MM "-" DD
"-0002-07-26", "+1978-04-17", "1814-05-17"
Note:
For the y and yy
formats, years below 100 are handled in a special way when the
y or yy symbol is used.
If the year falls in the range 0 (inclusive) to 69 (inclusive),
2000 is added. If the year falls in the range 70 (inclusive) to
99 (inclusive) then 1900 is added. This means that "00-01-01" is
interpreted as "2000-01-01".
Note:
The "Day, month and two digit year, with dots or tabs" format
(dd [.\t] mm "."
yy) only works for the year values 61 (inclusive)
to 99 (inclusive) - outside those years the time
format "HH [.:] MM
[.:] SS" has precedence.
Note:
The "Year (and just the year)" format only works if a time string
has already been found -- otherwise this format is recognised as
HHMM.
Note:
It is possible to over- and underflow the dd and
DD format. Day 0 means the last day of previous
month, whereas overflows count into the next month. This makes
"2008-08-00" equivalent to "2008-07-31" and "2008-06-31" equivalent
to "2008-07-01" (June only has 30 days).
Note that as of PHP 5.1.0 the day range is restricted to 0-31 as indicated
by the regular expression above. Thus "2008-06-32" is not a valid date
string, for instance.
It is also possible to underflow the mm and
MM formats with the value 0. A month value of
0 means December of the previous year. As example "2008-00-22" is
equivalent to "2007-12-22".
If you combine the previous two facts and underflow both the day and
the month, the following happens: "2008-00-00" first gets converted
to "2007-12-00" which then gets converted to "2007-11-30". This also
happens with the string "0000-00-00", which gets transformed into
"-0001-11-30" (the year -1 in the ISO 8601 calendar, which is 2 BC
in the proleptic Gregorian calendar).