gpt4 book ai didi

PHP 如何本地化 2038 年之后的日期

转载 作者:搜寻专家 更新时间:2023-10-31 21:08:48 24 4
gpt4 key购买 nike

我尝试在 php 中使用 2038 年之后的本地化日期

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 的日期本地化?

最佳答案

我们这里遇到了同样的问题。这个问题出现在 32 位机器上,因为格式化程序将 DateTime 值更改为整数时间戳来处理它。纪元 (1970) +- maxint 之外的日期会给你一个错误。有两种方法可以解决此问题:1 - 使用 64 位服务器。2 - 修复 PHP IntlDateFormatter

我们在这里使用 1-,祝你好运!

(时间戳的有效范围通常是从格林威治标准时间 1901 年 12 月 13 日星期五 20:45:54 到格林威治标准时间 2038 年 1 月 19 日星期二 03:14:07。(这些日期对应于最小值和最大值对于 32 位有符号整数)。但是,在 PHP 5.1.0 之前,在某些系统(例如 Windows)上,此范围限制为 01-01-1970 到 19-01-2038。参见:http://php.net/manual/en/function.date.php )

关于PHP 如何本地化 2038 年之后的日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26605520/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com