3.2. Converting Time and Date Parts to an Epoch Timestamp

Problem

You want to know what epoch timestamp corresponds to a set of time and date parts.

Solution

Use mktime( ) if your time and date parts are in the local time zone:

// 7:45:03 PM on March 10, 1975, local time
$then = mktime(19,45,3,3,10,1975);

Use gmmktime( ) if your time and date parts are in GMT:

// 7:45:03 PM on March 10, 1975, in GMT
$then = gmmktime(19,45,3,3,10,1975);

Pass no arguments to get the current date and time in the local or UTC time zone:

$now = mktime();
$now_utc = gmmktime();

Discussion

The functions mktime( ) and gmmktime( ) each take a date and time’s parts (hour, minute, second, month, day, year, DST flag) and return the appropriate Unix epoch timestamp. The components are treated as local time by mktime( ), while gmmktime( ) treats them as a date and time in UTC. For both functions, a seventh argument, the DST flag (1 if DST is being observed, 0 if not), is optional. These functions return sensible results only for times within the epoch. Most systems store epoch timestamps in a 32-bit signed integer, so “within the epoch” means between 8:45:51 P.M. December 13, 1901 UTC and 3:14:07 A.M. January 19, 2038 UTC.

In the following example, $stamp_now is the epoch timestamp when mktime( ) is called and $stamp_future is the epoch timestamp for 3:25 P.M. on June 4, 2012:

$stamp_now = mktime( );
$stamp_future = mktime(15,25,0,6,4,2012);

print $stamp_now;
print $stamp_future;
1028782421
               1338837900

Both epoch ...

Get PHP Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.