我正在将时间戳转换为日期。当我将2242425600
转换为日期时,它将日期转换为过去。我的代码是
echo date("m/d/Y",'2242425600');
它给了我'12 / 16/1904',这是一个错误的日期。我在http://www.onlineconversion.com/unix_time.htm检查了这个时间戳。它给出了正确的日期。
我不明白为什么日期函数在我的代码中给出了错误的日期。
答案 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)
返回正确的时间。看看这个例子
答案 3 :(得分:0)
这是一个有趣的“Y2K38 Bug”
请在此处查看http://www.sitepoint.com/is-your-php-application-affected-by-the-y2k38-bug/