PHP strptime() Function
The PHP strptime() function parses a time/date generated with strftime() function. Month and weekday names and other language dependent strings respect the current locale set with setlocale() (LC_TIME).
Syntax
strptime(timestamp, format)
Parameters
timestamp |
Required. Specify the string to parse (e.g. returned from strftime() function). |
format |
Required. Specify the format string to use. Refer to the table below for formatting options. It is same as used in strftime() function. |
format parameter string
Format character | Description | Example returned values |
---|---|---|
Day | ||
%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 (for Monday) through 7 (for Sunday) |
%w | Numeric representation of the day of the week | 0 (for Sunday) through 6 (for Saturday) |
Week | ||
%U | Week number of the given year, starting with the first Sunday as the first week | 13 (for the 13th full week of the year) |
%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 (where 53 accounts for an overlapping week) |
%W | A numeric representation of the week of the year, starting with the first Monday as the first week | 46 (for the 46th week of the year beginning with a Monday) |
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 (an alias of %b) | Jan through Dec |
%m | Two digit representation of the month | 01 (for January) through 12 (for December) |
Year | ||
%C | Two digit representation of the century (year divided by 100, truncated to an integer) | 19 for the 20th Century |
%g | Two digit representation of the year going by ISO-8601:1988 standards (see %V) | 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 |
%k | Hour in 24-hour format, with a space preceding single digits | 0 through 23 |
%I | Two digit representation of the hour in 12-hour format | 01 through 12 |
%l | (lower-case 'L') Hour in 12-hour format, with a space preceding 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 | The time zone offset. | -0500 for US Eastern Time |
%Z | The time zone abbreviation. | EST for Eastern Time |
Time and Date Stamps | ||
%c | Preferred date and time stamp based on locale | 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" (commonly used in database datestamps) | 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 ("%") |
Return Value
Returns an array or false on failure. The keys of the returned array are as follows:
- [tm_sec] - Seconds after the minute (0-61)
- [tm_min] - Minutes after the hour (0-59)
- [tm_hour] - Hour since midnight (0-23)
- [tm_mday] - Day of the month (1-31)
- [tm_mon] - Months since January (0-11)
- [tm_year] - Years since 1900
- [tm_wday] - Days since Sunday (0-6)
- [tm_yday] - Days since January 1 (0-365)
- [unparsed] - The timestamp part which was not recognized using the specified format.
Example: strptime() example
The example below shows the usage of strptime() function.
<?php //specifying the format of date/time $format = "%d/%m/%Y %H:%M:%S"; //parsing the current date/time $today = strftime($format); echo $today."\n"; print_r(strptime($today, $format)); ?>
The output of the above code will be:
01/10/2021 13:48:59 Array ( [tm_sec] => 59 [tm_min] => 48 [tm_hour] => 13 [tm_mday] => 1 [tm_mon] => 9 [tm_year] => 121 [tm_wday] => 5 [tm_yday] => 273 [unparsed] => )
Example: another format
Consider the example below where some other format is used.
<?php //specifying the format of date/time $format = "%d %B, %Y %I:%M:%S %p"; //parsing the current date/time $today = strftime($format); echo $today."\n"; print_r(strptime($today, $format)); ?>
The output of the above code will be:
01 October, 2021 02:36:46 PM Array ( [tm_sec] => 46 [tm_min] => 36 [tm_hour] => 14 [tm_mday] => 1 [tm_mon] => 9 [tm_year] => 121 [tm_wday] => 5 [tm_yday] => 273 [unparsed] => )
❮ PHP Date and Time Reference