怎么在PHP中对UNIX时间戳与日期间进行转换

介绍

怎么在PHP中对UNIX时间戳与日期间进行转换?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

UNIX时间戳是保存日期和时间的一种紧凑简洁的方法,是大多数UNIX系统中保存当前日期和时间的一种方法,也是在大多数计算机语言中表示日期和时间的一种标准格式。以32位整数表示格林威治标准时间,例如,使用证书11230499325表示当前时间的时间戳.UNIX时间戳是从1970年1月1日零点的格林尼治时间(UTC/午夜)开始起到当前时间所经过的秒数.1970年1月1日零点作为所有日期计算的基础,这个日期通常成为UNIX纪元。

因为UNIX时间戳是一个32位的数字格式,所以特别适用于计算机处理,例如计算两个时间点之间相差的天数。另外,由于文化和地区的差异,存在不同的时间格式,以及时区的问题,所以UNIX时间戳也是根据一个时区进行标准化而设计的一种通用格式,并且这种格式可以很容易地转换为任何格式。也因为UNIX时间戳是一个32位的证书表示的,所以在处理1902年以前或2038年以后的事件将会遇到一些问题。另外,在Windows下,由于时间戳不能为负数,所以使用PHP中提供的时间戳函数处理1970年之前的日期,就会发生错误。要使PHP代码具有可移植性,必须记住这一点。

<强>将日期和时间转变成UNIX时间戳

在PHP中,如果需要将日期和时间转变成UNIX时间戳,可以调用mktime()函数。该函数的原型如下所示:

代码如下:int mktime ([int小时[,int [int二[int月[,int [int年]]]]]])


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

代码如下:& lt;及# 63;PHP
回声日期(“Y-m-d", mktime(0, 0, 0, 12日,36岁,2008))干净\ n",,,,//日期超过31天,计算后输出2009-01-05
回声日期(“Y-m-d", mktime(0, 0, 0, 14日,1,2010))干净\ n",,,,,//月份超过12月,计算后输出2011-02-01
回声日期(“Y-m-d", mktime(0, 0, 0, 1, 1, 2012))干净\ n",,,,,,//没有问题的转变,输出结果2012-01-01
回声日期(“Y-m-d", mktime(0, 0, 0, 1, 1, 99))干净\ n",,,,,,,,//会将99年转变为1999年,1990-01-01
, # 63;在

如果有需要将任何英文文本的日期时间描述直接解析为UNIX时间戳,可以使用strtotime()函数,该函数的圆形如下所示:

代码如下:int strtotime (string [int现在])

函数strtotime()可以用英语的自然语言创建讴歌时刻的时间戳,接受一个包含美国英语日期格式的字符串并尝试将其解析为UNIX时间戳(自1970年1月1日格林尼治时间就是起的描述),其值相对于现在参数给出的时间,如果没有提供次参数则用系统当前时间。该函数执行成功则返回时间戳,否则返回错误的。和mktime()的对比如下所示:

代码如下:& lt;及# 63;php
回声日期(“Y-m-d", strtotime (“now")),,,,,,,,,,,,,,,,,,//输出现在的时间戳
回声日期(“Y-m-d", strtotime(“2012年5月8日“)),,,,,,,,,,,//输出2012-05-08
回声日期(“Y-m-d", strtotime (“+ 1 day")),,,,,,,,,,,,,,,//输出现在的日期加1天
回声日期(“Y-m-d", strtotime(“最后monday")),,,,,,,,,,//输出2012-04-02
, # 63;在

下例通过使用strtotime()函数编写一个纪念日的倒计时程序,来介绍一下该函数在项目开发中的实际应用,示例代码如下所示:

,代码如下:& lt;及# 63;php
现在美元=strtotime (“now");//当前时间
$ endtime=strtotime (“2014-08-18 08:08:08");//设定毕业时间,转成时间戳
,
第二美元=endtime -现在美元;//获取毕业时间到现在时间的时间戳(秒数)
$年=地板(第二美元/3600/24/365);//从这个时间戳中换算出年头数
,
temp=美元第二年* 365 * 24 * 3600美元;//从这个时间戳中去掉整年的秒数,就剩下月份的秒数
$月=地板($ temp/3600/24/30);//从这个时间戳中共换算出月数
,
$ temp=temp -月美元* 30 * 3600 * 24;//从时间戳中去掉整月的秒数,就剩下天的描述
天美元=地板(temp/24/3600美元);//从这个时间戳中换算出剩余的天数
,
$ temp=temp -天* 3600 * 24美元;//从这个时间戳中去掉整天的秒数,就剩下小时的秒数
美元小时=地板(temp/3600美元);//从这个时间戳中换算出剩余的小时数

怎么在PHP中对UNIX时间戳与日期间进行转换