Класс DateTime
DateTime::ATOM DATE_ATOM Atom (пример: 2005-08-15T15:52:01+00:00) DateTime::COOKIE DATE_COOKIE HTTP Cookies (пример: Monday, 15-Aug-2005 15:52:01 UTC) DateTime::ISO8601 DATE_ISO8601 ISO-8601 (пример: 2005-08-15T15:52:01+0000) DateTime::RFC822 DATE_RFC822 RFC 822 (пример: Mon, 15 Aug 05 15:52:01 +0000) DateTime::RFC850 DATE_RFC850 RFC 850 (пример: Monday, 15-Aug-05 15:52:01 UTC) DateTime::RFC1036 DATE_RFC1036 RFC 1036 (пример: Mon, 15 Aug 05 15:52:01 +0000) DateTime::RFC1123 DATE_RFC1123 RFC 1123 (пример: Mon, 15 Aug 2005 15:52:01 +0000) DateTime::RFC2822 DATE_RFC2822 RFC 2822 (пример: Mon, 15 Aug 2005 15:52:01 +0000) DateTime::RFC3339 DATE_RFC3339 Тоже, что и DATE_ATOM (начиная с версии PHP 5.1.3) DateTime::RSS DATE_RSS RSS (пример: Mon, 15 Aug 2005 15:52:01 +0000) DateTime::W3C DATE_W3C World Wide Web Consortium (пример: 2005-08-15T15:52:01+00:00)
Список изменений
Версия | Описание |
---|---|
5.5.0 | Класс теперь реализует DateTimeInterface. |
5.4.24 | Константа COOKIE изменена, чтобы соответствовать RFC 1036, где используются 4 цифры года вместо двух (RFC 850), как было в предыдущих версиях. |
5.2.2 | Результаты сравнения DateTime объектов при использовании операторов сравнения теперь соответствуют смыслу этих операторов. Ранее все объекты считались равными (==). |
Php datetime from iso
This page describes the different date formats in a BNF-like syntax, that the DateTimeImmutable , DateTime , date_create() , date_create_immutable() , and strtotime() parser understands.
To format DateTimeImmutable and DateTime objects, please refer to the documentation of the DateTimeInterface::format() method.
Description | Format | Examples |
---|---|---|
daysuf | «st» | «nd» | «rd» | «th» | |
dd | (1?3 | «3»[01]) daysuf ? | «7th», «22nd», «31» |
DD | «0» 5 | 21 | «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»? 2 | «1»2 | «0», «04», «7», «12» |
MM | «0» 9 | «1»2 | «00», «04», «07», «12» |
y | 7 | «00», «78», «08», «8», «2008» |
yy | 9 | «00», «08», «78» |
YY | 7 | «2000», «2008», «1978» |
YYY | 6 | «81412», «20192» |
Description | Format | Examples |
---|---|---|
American month and day | mm «/» dd | «5/12», «10/27» |
American month, day and year | mm «/» dd «/» y | «12/22/78», «1/17/2006», «1/17/6» |
Four digit year, month and day with slashes | YY «/» mm «/» dd | «2008/6/30», «1978/12/22» |
Four digit year and month (GNU) | YY «-» mm | «2008-6», «2008-06», «1978-12» |
Year, month and day with dashes | y «-» mm «-» dd | «2008-6-30», «78-12-22», «8-6-21» |
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 | dd ([ .\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» |
Year (expanded, 5-19 digits with sign) | [+-] YYY | «-81120», «+20192» |
Textual month (and just the month) | m | «March», «jun», «DEC» |
Description | Format | Examples |
---|---|---|
Eight digit year, month and day | YY MM DD | «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» |
Five+ digit year with required sign, month and day | [+-] YYY «-» MM «-» DD | «-81120-02-26», «+20192-04-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 HH MM .
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 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).
User Contributed Notes
How to Format Date/Time in ISO-8601 Using the PHP DateTime Class?
You can format a date/time in the ISO-8601 format using the DateTime class in PHP in the following ways:
Using DateTime::ATOM
The pre-defined constant DateTime::ATOM can be used to format date/time in the ISO-8601 format. You can use it in the following way:
$datetime = new DateTime('2021-01-03 02:30:00', new DateTimeZone('Europe/Berlin')); echo $datetime->format(DateTime::ATOM); // output: '2021-01-03T02:30:00+01:00'
This constant is actually defined in DateTimeInterface (as ‘Y-m-d\TH:i:sP’ ) so it can be used with any date/time class that implements the interface. Alternatively, you may also use the global constant DATE_ATOM .
There is also a DateTime::ISO8601 format (and its global constant variant DATE_ISO8601 ) which is not compatible with ISO-8601, and exists for backward compatibility reasons. You should use DateTime::ATOM instead. To learn more about this, you can check out our post about the differences between DateTime::ATOM and DateTime::ISO8601 .
Using the c Format Character
Another way to format the date/time in the ISO-8601 format is to use the » c » formatting character like so:
$datetime = new DateTime('2021-01-03 02:30:00', new DateTimeZone('Europe/Berlin')); echo $datetime->format('c'); // output: '2021-01-03T02:30:00+01:00'
Hope you found this post useful. It was published 03 Jan, 2021 . Please show your love and support by sharing this post.