在日期和时间函数中,UNIX时间戳的获取非常重要,时间戳是一个字符序列,是指格林尼治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总毫秒数。下面介绍几个获取当前时间的函数。
gmmktime()函数可取得GMT日期的UNIX时间戳。语法如下:
int gmmktime ([ int $hour [, int $minute [, int $second [, int $month [, int $day [, int $year [, int $is_dst ]]]]]]] )
说明: 该函数的参数可以从右到左依次空着,空着的参数会被设为相应的当前GMT值。
使用示例如下:
<? echo gmmktime(); // 没有设置参数,则默认取得当前GMT时间 echo gmmktime(0,45,3,7,7,2016); //设置参数表示GMT时间2016年7月7日0点45分3秒 ?>
执行以上程序的打印结果为:
1467909956 1467852303
mktime()也可取得一个日期的UNIX时间戳。语法如下:
int mktime ([ int $hour = date("H") [, int $minute = date("i") [, int $second = date("s") [, int $month = date("n") [, int $day = date("j") [, int $year = date("Y") [, int $is_dst = -1 ]]]]]]] )
说明: 该函数根据给出的参数返回UNIX时间戳。时间戳是一个长整数,包含了从UNIX纪元到给定时间的秒数。
和gmmktime函数一样,该函数的参数也可以从右向左省略,任何省略的参数会被设置成本地日期和时间的当前值。
使用示例如下:
<? echo mktime(); // 没有设置参数则默认取得当前GMT时间 echo mktime(0,45,3,7,7,2016); // 设置参数表示GMT时间2016年7月7日0点45分3秒 ?>
执行以上程序的打印结果为:
1467910465 1467852303
microtime可获得当前UNIX时间戳和微秒数。语法如下:
mixed microtime ([ bool $get_as_float ] )
说明: 如果设置get_as_float参数值为true,microtime()将返回一个浮点数;若不带参数,则返回一个“msec sec”格式的字符串,其中sec是自UNIX纪元起到现在的秒数,msec是微秒部分。字符串的两部分都是以秒为单位返回的。
使用示例如下:
<? echo microtime(); // 返回 msec sec 格式字符串表示时间 echo "<br/>"; echo microtime(true); // 返回一个浮点型字符串表示时间 ?>
执行以上程序的打印结果如下:
0.40474900 1467910862 1467910862.4048
time函数可返回当前的UNIX时间戳。语法如下:
int time ( void )
time函数的语法比较简单。使用示例如下:
<? echo time(); ?>
执行以上程序的打印结果为:
1467911104
getdate()可取得日期时间信息。语法如下:
array getdate ([ int $timestamp = time() ] )
该函数返回一个根据timestamp得出的包含有日期信息的关联数组array。如果没有给出时间戳,则认为是当前本地时间(此时和time()函数取值相同)。其返回的关联数组中的键名单元如表7-1所示。
表7-1 getdate()函数返回关联数组键名
getdate()函数的使用示例如下:
<? echo "<pre>"; var_dump(getdate()); ?>
执行以上程序的打印结果如下:
array(11) { ["seconds"]=> int(57) ["minutes"]=> int(18) ["hours"]=> int(17) ["mday"]=> int(7) ["wday"]=> int(4) ["mon"]=> int(7) ["year"]=> int(2016) ["yday"]=> int(188) ["weekday"]=> string(8) "Thursday" ["month"]=> string(4) "July" [0]=> int(1467911937) }