3.3.1 Problem
3.3.2 Solution
// 7:45:03 PM on March 10, 1975, local time $then = mktime(19,45,3,3,10,1975);
// 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();
3.3.3 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
print strftime('%c',$stamp_now);
print strftime('%c',$stamp_future);
Thu Aug 8 00:53:41 2002
Mon Jun 4 15:25:00 2012
Because the previous calls to mktime( ) were made on a
computer set to EDT (which is four hours behind GMT), using gmmktime( )
instead produces epoch timestamps that are 14400 seconds (four hours) smaller:
$stamp_now = gmmktime( ); $stamp_future = gmmktime(15,25,0,6,4,2012); print $stamp_now; print $stamp_future; 1028768021 1338823500
Feeding these gmmktime( )-generated epoch timestamps
back to strftime( ) produces formatting time strings that are also four
hours earlier:
print strftime('%c',$stamp_now);
print strftime('%c',$stamp_future);
Wed Aug 7 20:53:41 2002
Mon Jun 4 11:25:00 2012