PHP unix时间转换

时间:2012-01-25 16:52:09

标签: php

我想使用PHP将12/31/2099转换为Unix时间。我尝试strtotime('12/31/2099'),但函数返回null

我尝试使用在线转换工具将其转换为Unix时间,该工具提供4102358400,当转换为日期时会01/18/2038

如何将日期转换为Unix时间并再次将其转换回可读格式,如12/31/2099

3 个答案:

答案 0 :(得分:2)

在旧版本的PHP(< 5.1.0)中,strtotime支持最大日期为Tue,20 Jan 2038 03:14:07 UTC。要绕过此限制,请升级到5.1.0或更高版本。

64位版本不受此限制的影响。

有关详细信息,请参阅注释:http://www.php.net/strtotime

答案 1 :(得分:1)

32位Unix时间戳在2038年耗尽,所以如果你使用的是32位系统,那么就会出现问题。

答案 2 :(得分:1)

某个时间点的unix时间戳是自1970-01-01 00:00:00 UTC到此时间点的秒数。在2038-01-18这将溢出一个32位签名int - 称之为unices的Y2K错误。

请注意,这是实现的问题,而不是算法:大多数当前的实现使用无符号的32位int,但预计32位整数将在2038年之前的某个时间出现

通常的解决方法包括if-branch以检测日期是否在回绕之后并相应地进行调整。