7.2 处理UNIX时间戳
上一小节介绍函数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所示。从图中可以看出,时间戳不太容易被人理解,但是转换成对应的日期后,读者就能轻松识别当前时间了。
PHP的函数time()专门返回当前日期和时间的UNIX时间戳,不需要传入任何参数,该函数用法比较简单,这里不再赘述。
共有条评论 网友评论