我尝试在2038年之后使用php
来使用本地化日期strftime使用时间戳,所以它在2038年之后不起作用
DateTime未本地化...
所以我尝试将IntlDateFormatter与DateTime一起使用:
$d = DateTime::createFromFormat('Y-m-d', '2040-01-01');
$fmt = new IntlDateFormatter(
'fr_FR',
IntlDateFormatter::FULL,
IntlDateFormatter::FULL,
'America/Los_Angeles',
IntlDateFormatter::GREGORIAN
);
echo $fmt->format($d);
echo $fmt->getErrorMessage();
这是我得到的: datefmt_format:无法获取时间戳:U_ILLEGAL_ARGUMENT_ERROR
实际上我猜IntlDateFormatter会在内部将日期转换为时间戳......
那么我怎么能在php中将本地化的日期超过2038?
答案 0 :(得分:2)
我们在这里遇到同样的问题。 此问题出现在32位计算机中,因为格式化程序将DateTime值更改为整数时间戳以处理它。在纪元(1970)+ - maxint之外的日期会给你一个错误。 有两种方法可以解决这个问题: 1 - 使用64位服务器。 2 - 修复PHP IntlDateFormatter
我们要在这里1-,祝你好运!
(时间戳的有效范围通常为格林威治标准时间1901年12月13日20:45:54 GMT至2038年1月19日星期二03:14:07 GMT。(这些是与最小值和最大值对应的日期但是,在PHP 5.1.0之前,在某些系统(例如Windows)上,此范围限制在01-01-1970到19-01-2038之间.Cf:http://php.net/manual/en/function.date.php)