文章教程

7.2处理UNIX时间戳

9/17/2020 9:31:19 PM 人评论 次浏览

7.2 处理UNIX时间戳

7.1节介绍函数date()时,提到过其第2个参数是一个UNIX时间戳。大多数UNIX系统用一个32-bit的整数存储当前时间和日期,这个整数是从1970年1月1日零时(按GMT)开始的秒数,这个秒数即称为UNIX时间戳。

如果希望将一个日期和时间转换成一个UNIX时间戳,可以使用PHP提供的函数mktime()来完成。该函数的语法如下。


int mktime(int $hour, int $minute, int $second, int $month, int day, int $year);

函数mktime()根据所给参数返回UNIX时间戳,如果参数非法,函数返回FALSE。函数mktime()的第1个参数是小时数,第2个参数是分钟数,第3个参数是秒数(范围是0-59),第4个参数是月份,第5个参数是天数,第6个参数是年份。年份可以是两位或四位数字,如果是两位数字,0—69对应于2000—2069,70—99对应于1970—1999。该函数的参数从右向左可以省略,省略的参数将以本地日期和时间代替。例如如下代码,即返回当前日期和时间的UNIX时间戳。


$cur_timestamp = mktime();

又如如下代码,即返回当前年份1月1号的UNIX时间戳。


mktime(0,0,0,1,1);

函数mktime()也可以做简单的日期计算,如下代码就是一个例子,这段代码表示使用函数mktime()计算30天后同一时间的时间戳。


mktime(0,0,0,$month,$day+30,$year);

读者可以通过代码7-2进一步认识PHP中对UNIX时间戳的处理。

代码7-2处 理UNIX时间戳7-2.php


     01 <?php
     02 echo "
时间戳".mktime(0,0,0,12,31,2008)."
对应的日期是:";         //
换算时间戳
     03 echo "<br/>";
     04 
     05 echo date("M-d-Y", mktime(0,0,0,12,31,2008));             
    //
按指定格式输出日期
     06 echo "<hr>";
     07 echo "<br/>";
     08 
     09 $day = 1;
     10 echo "
时间戳".mktime(0,0,0,7,$day+38,2012)."
对应的日期是:<br/>";//
日期计算后的时间戳
     11 echo date("Y-m-d", mktime(0,0,0,7,$day+38,2012));
     12 echo "<hr>";
     13 ?>

【代码解析】这段程序的执行结果如图7-2所示。从图中可以看出,时间戳不太容易被人理解,但是转换成对应的日期后,读者就能轻松识别当前时间了。

图7-2 处理UNIX时间戳

PHP的函数time()专门用于返回当前日期和时间的UNIX时间戳,不需要传入任何参数,该函数用法比较简单,这里不作赘述。

教程类别