(PHP 5 >= 5.2.0, PHP 7, PHP 8)
DateTimeInterface::format -- DateTimeImmutable::format -- DateTime::format -- date_format — Returns date formatted according to given format
Object-oriented style
Procedural style
Returns date formatted according to given format.
object
Procedural style only: A DateTime object returned by date_create()
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 required, 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().
Returns the formatted date string on success.
Version | Description |
---|---|
8.2.0 |
The format characters X and x
have been added.
|
8.0.0 |
The format character p has been added.
|
Example #1 DateTimeInterface::format() example
Object-oriented style
<?php
$date = new DateTimeImmutable('2000-01-01');
echo $date->format('Y-m-d H:i:s');
?>
Procedural style
<?php
$date = date_create('2000-01-01');
echo date_format($date, 'Y-m-d H:i:s');
?>
The above example will output:
2000-01-01 00:00:00
Example #2 More examples
<?php
// set the default timezone to use.
date_default_timezone_set('UTC');
// now
$date = new DateTimeImmutable();
// Prints something like: Wednesday
echo $date->format('l'), "\n";
// Prints something like: Wednesday 19th of October 2022 08:40:48 AM
echo $date->format('l jS \o\f F Y h:i:s A'), "\n";
/* use the constants in the format parameter */
// prints something like: Wed, 19 Oct 2022 08:40:48 +0000
echo $date->format(DateTimeInterface::RFC2822), "\n";
?>
You can prevent a recognized character in the format string from being expanded by escaping it with a preceding backslash. If the character with a backslash is already a special sequence, you may need to also escape the backslash.
Example #3 Escaping characters while formatting
<?php
$date = new DateTimeImmutable();
// prints something like: Wednesday the 19th
echo $date->format('l \t\h\e jS');
?>
To format dates in other languages, IntlDateFormatter::format() can be used instead of DateTimeInterface::format().
This method does not use locales. All output is in English.