在php中转换日期中的时间戳

时间:2011-06-29 05:00:12

标签: php

我正在将时间戳转换为日期。当我将2242425600转换为日期时,它将日期转换为过去。我的代码是

echo date("m/d/Y",'2242425600'); 

它给了我'12 / 16/1904',这是一个错误的日期。我在http://www.onlineconversion.com/unix_time.htm检查了这个时间戳。它给出了正确的日期。

我不明白为什么日期函数在我的代码中给出了错误的日期。

4 个答案:

答案 0 :(得分:2)

这是因为PHP的date函数无法处理2038年以上的日期,而您正在尝试2041年的时间戳。

  

时间戳的有效范围是   通常来自1901年12月13日星期五   格林威治标准时间20:45:54到2038年1月19日星期二   格林威治标准时间03:14:07 (这些是日期   对应于最小值和   32位有符号的最大值   整数)。但是,在PHP 5.1.0之前   此范围仅限于01-01-1970   某些系统(例如19-01-2038)   窗口)。

您必须使用DateTime课程。

答案 1 :(得分:0)

在处理大于20世纪30年代的日期时,您需要使用日期/时间对象

http://php.net/manual/en/book.datetime.php

http://www.php.net/manual/en/datetime.construct.php

来自手册

$date = new DateTime('@2242425600');
echo $date->format("m/d/Y") . "\n";

答案 2 :(得分:0)

返回正确的时间。看看这个例子

http://phpcode.eu/tet/

答案 3 :(得分:0)

这是一个有趣的“Y2K38 Bug”

请在此处查看http://www.sitepoint.com/is-your-php-application-affected-by-the-y2k38-bug/