Please note that if you are using DATE_RFC7231 format (used in HTTP/1.1), you'll need to change the DateTime object timezone to GMT *before*, or you'll encounter weird results, as this format DOES NOT convert the date to GMT.
So if you have a DateTime object using UTC+01:00 as its timezone, you will get a difference of 1 hour between your resulting date string and what should be the "correct" date.
Recommended use:
<?php
$date_gmt = clone $date;
$date_gmt->setTimezone(new \DateTimeZone('GMT'));
echo $date_gmt->format(DATE_RFC7231);
?>The DateTimeInterface interface
(PHP 5 >= 5.5.0, PHP 7, PHP 8)
Introduction
DateTimeInterface was created so that parameter, return, or property type declarations may accept either DateTimeImmutable or DateTime as a value. It is not possible to implement this interface with userland classes.
Common constants that allow for formatting DateTimeImmutable or DateTime objects through DateTimeImmutable::format() and DateTime::format() are also defined on this interface.
Interface synopsis
Predefined Constants
- DateTimeInterface::ATOM string
- DATE_ATOM
- Atom (example: 2005-08-15T15:52:01+00:00); compatible with ISO-8601, RFC 3339, and XML Schema
- DATE_COOKIE
- HTTP Cookies (example: Monday, 15-Aug-2005 15:52:01 UTC)
- DateTimeInterface::ISO8601 string
- DATE_ISO8601
-
ISO-8601-like (example: 2005-08-15T15:52:01+0000)
Note: This format is not compatible with ISO-8601, but is left this way for backward compatibility reasons. Use DateTimeInterface::ISO8601_EXPANDED, DateTimeInterface::ATOM for compatibility with ISO-8601 instead. (ref ISO8601:2004 section 4.3.3 clause d)
- DateTimeInterface::ISO8601_EXPANDED string
- DATE_ISO8601_EXPANDED
-
ISO-8601 Expanded (example: +10191-07-26T08:59:52+01:00)
Note: This format allows for year ranges outside of ISO-8601's normal range of
0000-9999by always including a sign character. It also ensures that the timezone part (+01:00) is compatible with ISO-8601. - DateTimeInterface::RFC822 string
- DATE_RFC822
- RFC 822 (example: Mon, 15 Aug 05 15:52:01 +0000)
- DateTimeInterface::RFC850 string
- DATE_RFC850
- RFC 850 (example: Monday, 15-Aug-05 15:52:01 UTC)
- DateTimeInterface::RFC1036 string
- DATE_RFC1036
- RFC 1036 (example: Mon, 15 Aug 05 15:52:01 +0000)
- DateTimeInterface::RFC1123 string
- DATE_RFC1123
- RFC 1123 (example: Mon, 15 Aug 2005 15:52:01 +0000)
- DateTimeInterface::RFC7231 string
- DATE_RFC7231
- RFC 7231 (since PHP 7.0.19 and 7.1.5) (example: Sat, 30 Apr 2016 17:52:13 GMT)
- DateTimeInterface::RFC2822 string
- DATE_RFC2822
- RFC 2822 (example: Mon, 15 Aug 2005 15:52:01 +0000)
- DateTimeInterface::RFC3339 string
- DATE_RFC3339
- Same as DATE_ATOM
- DateTimeInterface::RFC3339_EXTENDED string
- DATE_RFC3339_EXTENDED
- RFC 3339 EXTENDED format (example: 2005-08-15T15:52:01.000+00:00)
- DateTimeInterface::RSS string
- DATE_RSS
- RSS (example: Mon, 15 Aug 2005 15:52:01 +0000)
- DateTimeInterface::W3C string
- DATE_W3C
- World Wide Web Consortium (example: 2005-08-15T15:52:01+00:00)
Changelog
| Version | Description |
|---|---|
| 8.5.0 |
The DATE_RFC7231 and
DateTimeInterface::RFC7231 constants have been deprecated.
|
| 8.4.0 | The class constants are now typed. |
| 8.2.0 |
The constant DateTimeInterface::ISO8601_EXPANDED
was added.
|
| 7.2.0 | The class constants of DateTime are now defined on DateTimeInterface. |
Table of Contents
- DateTimeInterface::diff — Returns the difference between two DateTime objects
- DateTimeInterface::format — Returns date formatted according to given format
- DateTimeInterface::getMicrosecond — Gets the microsecond part of the Unix timestamp
- DateTimeInterface::getOffset — Returns the timezone offset
- DateTimeInterface::getTimestamp — Gets the Unix timestamp
- DateTimeInterface::getTimezone — Return time zone relative to given DateTime
- DateTime::__serialize — Serialize a DateTime
- DateTime::__unserialize — Unserialize an Datetime
- DateTime::__wakeup — The __wakeup handler