第六章:第6节 PHP内置函数——与时间、日期相关函数

更新于:2017-05-01 20:05:46

比如一个网站,发表文章需要记录发表时间;会员登录需要记录登录时间;会员生日当天发小礼物祝贺;网站定点开启抢购功能……您会发现网站的大部分功能都离不开与时间的牵连。所以PHP程序员必须要掌握以下几个对于时间操作的函数,不懂得处理时间,基本上大部分功能都写不出来。


1.png


time返回当前的 Unix 时间戳


返回当前的时间戳:


1.png

1.png


这个整数值“1493637548”是一个时间戳,它代表什么意思呢?时间戳是指格林威治时间1970年01月01日00时00分00秒(北京时间1970年01月01日08时00分00秒)起至现在的总秒数(1970年以前的时间戳都是负数)。计算机就靠时间戳来做日期、时间有关的计算。


我们人眼直接看这个整数值是没有意义的,怎么把整数值转成人类能看懂的时间表现形式?那就需要date函数了。


date格式化一个本地时间/日期


这个函数总共两个参数,第一个参数是时间的展现形式(字符串),第二个参数是时间戳,默认是当前时间戳。


“Y-m-d H:i:s”是最常用的一种时间展现形式:


1.png

1.png

“Y”转成了年,“m”转成了月,“d”转成了日,“H”转成了时,“i”转成了分,“s”转成了秒。这些都是时间的format(格式)字符,还有很多其他的字符,手册里有详细的介绍。


程序里获得当前的年月日时分秒不需要传时间戳,如果获取一个指定日期的年月日时分秒,就得传入相应的时间戳。


上面的示例中“86400”是一天的秒数,“time()+86400”正好获取的第二天当前时分秒的时间戳。


有了time、date这两个函数,我们对时间、日期的操作还不够完美。我们可以由时间戳转正常的时间展现形式,我们怎么指定一个时间转成时间戳呢?看下面的函数:


strtotime将任何英文文本的日期时间描述解析为 Unix 时间戳


1.png

1.png

分析下:

第5行显示的时间戳“1493639535”

第6行显示时间展现形式字符串“2017-05-01 19:52:15”

第7行函数strtotime把“2017-05-01 19:52:15”转成一个时间戳,正好是“1493639535”


strtotime能转成时间戳的时间展现形式是很多的,具体的参考手册吧。


除了time、date、strtotime,其他的时间函数用的很少,还有一个:


microtime返回当前 Unix 时间戳和微秒数


前面我们介绍过,多用于计算带微妙数的时间差,比如我们写的代码从“A”点执行到“B”点,需要多长时间,精确到微妙,那就用得上microtime。


本节学习代码》》》