DateTime::createFromInterface
The DateTimeInterface object that needs to be converted to a mutable version. This object is not modified, but instead a new DateTime object is created containing the same date, time, and timezone information.
Return Values
Examples
Example #1 Creating a mutable date time object
$date = new DateTimeImmutable("2014-06-20 11:45 Europe/London"); $mutable = DateTime::createFromInterface($date); $date = new DateTime("2014-06-20 11:45 Europe/London"); $also_mutable = DateTime::createFromInterface($date); ?>
PHP 8.2
(PHP 5 5.3.0, 7, 8) DateTime::createFromFormat date_create_from_format Parses string according to specified Object-oriented style Procedural style Returns
(PHP 7 7.3.0, 8) DateTime::createFromImmutable Returns new object encapsulating the given DateTimeImmutable The immutable DateTimeImmutable object that
(PHP 5 5.3.0, 7, 8) DateTime::diff DateTimeImmutable::diff DateTimeInterface::diff date_diff Returns the difference between two objects Object-oriented
(PHP 5 5.2.1, 7, 8) DateTime::format DateTimeImmutable::format DateTimeInterface::format date_format Returns formatted according to given Object-oriented
The DateTimeInterface interface
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 DATE_ATOM Atom (example: 2005-08-15T15:52:01+00:00) DateTimeInterface::COOKIE DATE_COOKIE HTTP Cookies (example: Monday, 15-Aug-2005 15:52:01 UTC) DateTimeInterface::ISO8601 DATE_ISO8601 ISO-8601 (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 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 — 9999 by always including a sign character. It also addresses that that timezone part ( +01:00 ) is compatible with ISO-8601.
DateTimeInterface::RFC822 DATE_RFC822 RFC 822 (example: Mon, 15 Aug 05 15:52:01 +0000) DateTimeInterface::RFC850 DATE_RFC850 RFC 850 (example: Monday, 15-Aug-05 15:52:01 UTC) DateTimeInterface::RFC1036 DATE_RFC1036 RFC 1036 (example: Mon, 15 Aug 05 15:52:01 +0000) DateTimeInterface::RFC1123 DATE_RFC1123 RFC 1123 (example: Mon, 15 Aug 2005 15:52:01 +0000) DateTimeInterface::RFC7231 DATE_RFC7231 RFC 7231 (since PHP 7.0.19 and 7.1.5) (example: Sat, 30 Apr 2016 17:52:13 GMT) DateTimeInterface::RFC2822 DATE_RFC2822 RFC 2822 (example: Mon, 15 Aug 2005 15:52:01 +0000) DateTimeInterface::RFC3339 DATE_RFC3339 Same as DATE_ATOM DateTimeInterface::RFC3339_EXTENDED DATE_RFC3339_EXTENDED RFC 3339 EXTENDED format (example: 2005-08-15T15:52:01.000+00:00) DateTimeInterface::RSS DATE_RSS RSS (example: Mon, 15 Aug 2005 15:52:01 +0000) DateTimeInterface::W3C DATE_W3C World Wide Web Consortium (example: 2005-08-15T15:52:01+00:00)
Changelog
Version | Description |
---|---|
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::getOffset — Returns the timezone offset
- DateTimeInterface::getTimestamp — Gets the Unix timestamp
- DateTimeInterface::getTimezone — Return time zone relative to given DateTime
- DateTime::__wakeup — The __wakeup handler
date_format
The format of the outputted date string . See the formatting options below. There are also several predefined date constants that may be used instead, so for example DATE_RSS contains the format string ‘D, d M Y H:i:s’ .
format character | Description | Example returned values |
---|---|---|
Day | — | — |
d | Day of the month, 2 digits with leading zeros | 01 to 31 |
D | A textual representation of a day, three letters | Mon through Sun |
j | Day of the month without leading zeros | 1 to 31 |
l (lowercase ‘L’) | A full textual representation of the day of the week | Sunday through Saturday |
N | ISO 8601 numeric representation of the day of the week | 1 (for Monday) through 7 (for Sunday) |
S | English ordinal suffix for the day of the month, 2 characters | st , nd , rd or th . Works well with j |
w | Numeric representation of the day of the week | 0 (for Sunday) through 6 (for Saturday) |
z | The day of the year (starting from 0) | 0 through 365 |
Week | — | — |
W | ISO 8601 week number of year, weeks starting on Monday | Example: 42 (the 42nd week in the year) |
Month | — | — |
F | A full textual representation of a month, such as January or March | January through December |
m | Numeric representation of a month, with leading zeros | 01 through 12 |
M | A short textual representation of a month, three letters | Jan through Dec |
n | Numeric representation of a month, without leading zeros | 1 through 12 |
t | Number of days in the given month | 28 through 31 |
Year | — | — |
L | Whether it’s a leap year | 1 if it is a leap year, 0 otherwise. |
o | ISO 8601 week-numbering year. This has the same value as Y , except that if the ISO week number ( W ) belongs to the previous or next year, that year is used instead. | Examples: 1999 or 2003 |
X | An expanded full numeric representation of a year, at least 4 digits, with — for years BCE, and + for years CE. | Examples: -0055 , +0787 , +1999 , +10191 |
x | An expanded full numeric representation if requried, or a standard full numeral representation if possible (like Y ). At least four digits. Years BCE are prefixed with a — . Years beyond (and including) 10000 are prefixed by a + . | Examples: -0055 , 0787 , 1999 , +10191 |
Y | A full numeric representation of a year, at least 4 digits, with — for years BCE. | Examples: -0055 , 0787 , 1999 , 2003 , 10191 |
y | A two digit representation of a year | Examples: 99 or 03 |
Time | — | — |
a | Lowercase Ante meridiem and Post meridiem | am or pm |
A | Uppercase Ante meridiem and Post meridiem | AM or PM |
B | Swatch Internet time | 000 through 999 |
g | 12-hour format of an hour without leading zeros | 1 through 12 |
G | 24-hour format of an hour without leading zeros | 0 through 23 |
h | 12-hour format of an hour with leading zeros | 01 through 12 |
H | 24-hour format of an hour with leading zeros | 00 through 23 |
i | Minutes with leading zeros | 00 to 59 |
s | Seconds with leading zeros | 00 through 59 |
u | Microseconds. Note that date() will always generate 000000 since it takes an int parameter, whereas DateTime::format() does support microseconds if DateTime was created with microseconds. | Example: 654321 |
v | Milliseconds. Same note applies as for u . | Example: 654 |
Timezone | — | — |
e | Timezone identifier | Examples: UTC , GMT , Atlantic/Azores |
I (capital i) | Whether or not the date is in daylight saving time | 1 if Daylight Saving Time, 0 otherwise. |
O | Difference to Greenwich time (GMT) without colon between hours and minutes | Example: +0200 |
P | Difference to Greenwich time (GMT) with colon between hours and minutes | Example: +02:00 |
p | The same as P , but returns Z instead of +00:00 (available as of PHP 8.0.0) | Examples: Z or +02:00 |
T | Timezone abbreviation, if known; otherwise the GMT offset. | Examples: EST , MDT , +05 |
Z | Timezone offset in seconds. The offset for timezones west of UTC is always negative, and for those east of UTC is always positive. | -43200 through 50400 |
Full Date/Time | — | — |
c | ISO 8601 date | 2004-02-12T15:19:21+00:00 |
r | » RFC 2822/» RFC 5322 formatted date | Example: Thu, 21 Dec 2000 16:01:07 +0200 |
U | Seconds since the Unix Epoch (January 1 1970 00:00:00 GMT) | See also time() |
Unrecognized characters in the format string will be printed as-is. The Z format will always return 0 when using gmdate() .
Note:
Since this function only accepts int timestamps the u format character is only useful when using the date_format() function with user based timestamps created with date_create() .
Return Values
Returns the formatted date string on success.
The DateTimeInterface interface
DateTimeInterface was created so that parameter, return, or property type declarations may accept either DateTime or DateTimeImmutable as a value. It is not possible to implement this interface with userland classes.
Interface synopsis
public diff(DateTimeInterface $targetObject, bool $absolute = false): DateInterval
public format(string $format): string
public getTimezone(): DateTimeZone|false
Predefined Constants
DateTimeInterface::ATOM DATE_ATOM Atom (example: 2005-08-15T15:52:01+00:00) DateTimeInterface::COOKIE DATE_COOKIE HTTP Cookies (example: Monday, 15-Aug-2005 15:52:01 UTC) DateTimeInterface::ISO8601 DATE_ISO8601 ISO-8601 (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 DateTime::ATOM or DATE_ATOM for compatibility with ISO-8601 instead.
DateTimeInterface::RFC822 DATE_RFC822 RFC 822 (example: Mon, 15 Aug 05 15:52:01 +0000) DateTimeInterface::RFC850 DATE_RFC850 RFC 850 (example: Monday, 15-Aug-05 15:52:01 UTC) DateTimeInterface::RFC1036 DATE_RFC1036 RFC 1036 (example: Mon, 15 Aug 05 15:52:01 +0000) DateTimeInterface::RFC1123 DATE_RFC1123 RFC 1123 (example: Mon, 15 Aug 2005 15:52:01 +0000) DateTimeInterface::RFC7231 DATE_RFC7231 RFC 7231 (since PHP 7.0.19 and 7.1.5) (example: Sat, 30 Apr 2016 17:52:13 GMT) DateTimeInterface::RFC2822 DATE_RFC2822 RFC 2822 (example: Mon, 15 Aug 2005 15:52:01 +0000) DateTimeInterface::RFC3339 DATE_RFC3339 Same as DATE_ATOM DateTimeInterface::RFC3339_EXTENDED DATE_RFC3339_EXTENDED RFC 3339 EXTENDED format (example: 2005-08-15T15:52:01.000+00:00) DateTimeInterface::RSS DATE_RSS RSS (example: Mon, 15 Aug 2005 15:52:01 +0000) DateTimeInterface::W3C DATE_W3C World Wide Web Consortium (example: 2005-08-15T15:52:01+00:00)
Changelog
Version | Description |
---|---|
7.2.0 | The class constants of DateTime are now defined on DateTimeInterface. |
Table of Contents
- DateTime::diff — Returns the difference between two DateTime objects
- DateTime::format — Returns date formatted according to given format
- DateTime::getOffset — Returns the timezone offset
- DateTime::getTimestamp — Gets the Unix timestamp
- DateTime::getTimezone — Return time zone relative to given DateTime
- DateTime::__wakeup — The __wakeup handler
PHP 8.2
(PHP 5 5.2.0, 7, 8) This class behaves the same DateTimeImmutable except objects are modified itself when modification methods such DateTime::modify()