使用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)?
答案 0 :(得分:0)
这是UNIX Y2K38 bug。它已经通过使用DateTime::diff
在PHP 或的64位实现中修复,{{1}}在内部不使用整数,因此不会遇到问题。
你需要。没有切换平台就没有真正的解决方案。