PHP:strtotime和日期超过2038年1月19日

时间:2013-04-10 03:06:49

标签: php strtotime

使用strtotime函数查找两个给定日期之间的差异,如下所示:

$diff_in_mill_seconds = strtotime($ToDate) - strtotime($FromDate);
$difference_in_years = round($diff_in_mill_seconds / (365*60*60*24),1);

当$ ToDate超出2038-01-19时,此脚本失败。

官方PHP文档说:

  

时间戳的有效范围通常是从星期五,19年12月13日20:45:54 UTC到星期二,2038年1月19日03:14:07 UTC

PHP文档也说:

  

不建议使用此函数进行数学运算。最好在PHP 5.3及更高版本中使用DateTime :: add()和DateTime :: sub(),或在PHP 5.2中使用DateTime :: modify()。

我不能使用DateTime :: add()和DateTime :: sub(),因为服务器上的PHP版本是5.2。

那么,如何使用php 5.2计算两年中两个日期之间的差异(超过2038-01-19)?

1 个答案:

答案 0 :(得分:0)

这是UNIX Y2K38 bug。它已经通过使用DateTime::diff在PHP 的64位实现中修复,{{1}}在内部不使用整数,因此不会遇到问题。

你需要。没有切换平台就没有真正的解决方案。