我尝试在php中使用2038年后的本地化日期
strftime使用时间戳,因此它在2038年后不起作用
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: cannot get timestamp: U_ILLEGAL_ARGUMENT_ERROR
实际上,我猜IntlDateFormatter内部会将日期转换为时间戳。
那么我如何在php中本地化2038年以后的日期呢?
发布于 2014-10-28 20:08:26
我们在这里遇到了同样的问题。此问题会在32位计算机中出现,因为格式化程序会将DateTime值更改为整数时间戳来处理它。在纪元(1970) +- maxint之外的日期会给你一个错误。有两种方法可以解决这个问题:1-使用64位服务器。2-修复PHP IntlDateFormatter
我们用1-这里,祝你好运!
(时间戳的有效范围通常是从星期五,1901年12月13日20:45:54 GMT到2038年1月19日03:14:07 GMT。(这些日期对应于32位有符号整数的最小值和最大值)。然而,在PHP 5.1.0之前,在某些系统(例如Windows)上,此范围被限制在01-01-1970到19-01-2038之间。Cf:http://php.net/manual/en/function.date.php )
https://stackoverflow.com/questions/26605520
复制相似问题