How to: format dates in PHP

03 August 2012

There are two widely used functions in PHP to format time (a third is DateTime but that's a bit more advanced). Date() and strftime(). I'll focus on strftime(), because this function allows you to format date strings in other languages then English in combination with setlocale().

echo strftime('%d %B %Y', time());
// outputs: 09 August 2012

This displays the current date. There are lots more options you can use to format the date. They are displayed in the table below. These are a few more examples of different formatted dates:

echo strftime('%A %d %B %Y, day %j of this year', time());
// outputs: Friday 03 August 2012, day 216 of this year
echo strftime('%c', time());
// outputs the date string in the preferred locale.
echo strftime('%D', time());
// outputs: month/day/year

Days
%a - An abbreviated textual representation of the day (Sun through Sat)
%A - A full textual representation of the day (Sunday through Saturday)
%d - Two-digit day of the month (with leading zeros) (01 to 31)
%e - Day of the month, with a space preceding single digits. (1 to 31)
%j - Day of the year, 3 digits with leading zeros (001 to 366)
%u - ISO-8601 numeric representation of the day of the week (1 to 7: mon-sun)
%w - Numeric representation of the day of the week (0 through 6: sun-sat)
Week
%U - Week number of the given year, starting with the first Sunday as the first week (13)
%V - ISO-8601:1988 week number of the given year, starting with the first week of the year with at least 4 weekdays, with Monday being the start of the week (01 through 53)
%W - A numeric representation of the week of the year, starting with the first Monday as the first week (46)
Month
%b - Abbreviated month name, based on the locale (Jan through Dec)
%B - Full month name, based on the locale (January through December)
%h - Abbreviated month name, based on the locale (Jan through Dec)
%m - Two digit representation of the month (01 to 12: jan/dec)
Year
%C - Two digit representation of the century (19 for the 20th Century)
%g - Two digit representation of the year going by ISO-8601:1988 standards (09 for the week of January 6, 2009)
%G - The full four-digit version of %g (2008 for the week of January 3, 2009)
%y - Two digit representation of the year (09 for 2009, 79 for 1979)
%Y - Four digit representation for the year (2038)
Time
%H - Two digit representation of the hour in 24-hour format (00 through 23)
%I - Two digit representation of the hour in 12-hour format (01 through 12)
%l - Hour in 12-hour format, with a space preceeding single digits (1 through 12)
%M - Two digit representation of the minute (00 through 59)
%p - UPPER-CASE 'AM' or 'PM' based on the given time (AM for 00:31, PM for 22:23)
%P - lower-case 'am' or 'pm' based on the given time (am for 00:31, pm for 22:23)
%r - Same as "%I:%M:%S %p" (09:34:17 PM for 21:34:17)
%R - Same as "%H:%M" (00:35 for 12:35 AM, 16:44 for 4:44 PM)
%S - Two digit representation of the second (00 through 59)
%T - Same as "%H:%M:%S" (21:34:17 for 09:34:17 PM)
%X - Preferred time representation based on locale, without the date (03:59:16 or 15:59:16)
%z - Either the time zone offset from UTC or the abbreviation (-0500 or EST for Eastern Time)
%Z - The time zone offset/abbreviation option NOT given by %z (-0500 or EST for Eastern Time)
Time and Date Stamps
%c - Preferred date and time stamp based on local (Tue Feb 5 00:45:10 2009 for February 5, 2009 at 12:45:10 AM)
%D - Same as "%m/%d/%y" (02/05/09 for February 5, 2009)
%F - Same as "%Y-%m-%d" (2009-02-05 for February 5, 2009)
%s - Unix Epoch Time timestamp (305815200 for September 10, 1979 08:40:00 AM)
%x - Preferred date representation based on locale, without the time (02/05/09 for February 5, 2009)
Miscellaneous
%n - A newline character ("n")
%t - A Tab character ("t")
%% - A literal percentage character ("%")
You must have JavaScript enabled to use this form!

Leave a comment!

  1. Your mail is safe with me. It's only only used to display your Gravatar image!

0 comments

Please feel free to be the first to comment on this page!

By placing a comment you let me know i'm doing a good job. It doesn't have to be constructive, just a "awesome!" makes me really happy! You contribute to a better world!