PHP日期和时间,UNIX时间戳,mktime()

zxh5566  2016-08-16 07:15   Hits: 

在开发web程序时,时间起着重要的作用,不仅在数据存储和显示时需要日期和时间的管理,有一些功能模块的开发,时间通常是至关重要的,例如,网页静态化需要判断缓存时间,计算页面访问消耗的时间,在不同的时间段提供不同的功能等。PHP提供了强大的日期和时间处理功能,通过时间和日期函数库,能够得到PHP程序在运行时所在服务器中的日期和时间,并可以对它们进行检查和格式化,在不同格式之间进行转换。

1、UNIX时间戳

UNIX时间戳是保存日期和时间的一种紧凑简洁的方法,是大多数UNIX系统中保存当前日期和时间的一种方法,也是在大多数计算机语言中表示日期和时间的一种标准格式,以32位的整数表示格林威治时间,例如,使用整数11230499325表示当前时间的时间戳,UNIX时间戳是从1970年1月1日零点开始到当前时间所经过的秒数,因为UNIX时间戳是一个32位数字,所以特别适合计算机处理,也因为UNIX时间戳是一个32位整数,所以在处理1902年以前或2038以后的事件,将会遇到一些问题,另外,windows系统下,由于时间戳不能为负数,如果使用PHP中提供的时间戳函数处理1970年以前的日期,就会发生错误

将日期和时间转变为UNIX时间戳

在PHP中,如果需要将日期和时间转变为时间戳,可以调用mktime()函数,该函数中所有参数都是可选的,如果参数为空,默认将当前时间转变为UNIX时间戳,这样和直接调用time()函数获取当前的UNIX时间戳功能相同,参数可以从右向左省略,任何省略的参数会被设置成本地日期和时间的当前值,如果只想转变日期,对具体的时间不在乎,可以将前三个转变时间的参数都设置为0,mktime()函数对于日期运算和验证非常有用,它可以自动校正越界输入。

<?php
echo date("M-d-Y",mktime(0,0,0,12,36,2007))."\n";
?>

日期的计算

在PHP中,计算两个日期之间间隔的长度,最简单的办法就是通过计算两个UNIX时间戳之差来获得

<?php

$year =1981;
$month = 11;
$day=05;
$birthday=mktime(0,0,0,$month,$day,$year);
$nowdate = time();
$agennix = $nowdate - $birthday;
$age = floor($ageunix/60*60*24*365);
echo "年龄:".$age;

?>

在以上脚本中,调用mktime()函数将从用户出生日期转变为UNIX时间戳,再调用time()函数获取当前时间戳,因为这个日期的格式都是使用整数表示,所以可以将它们相减,又将计算后获取的UNIX时间戳除以一年的秒数,将UNIX时间戳转变为以年度量的单位。

PHP提供了多种获取时间和日期的函数,除了通过time()获取当前时间戳,调用getdate()确定当前时间,通过gettimeofday()函数获取某一天中的具体时间,此外,在PHP中还可以通过date_sunrise()和date_sunset()两个函数,获取某地点某天的日出和日落时间。

getdate()函数返回一个由时间戳组成的关联数组,参数需要一个可选的UNIX时间戳,如果没有给出,则认为是当前本地时间。总共返回11个数组元素。

上一篇:PHP异常处理
下一篇:PHP日期格式化函数date(),修改PHP默认时区