我的情况是,日期总是晚一天。
例如,我有这个值 -243219600
这是相对于日期 18/04/1962
之后
date('d/m/Y', -243219600);
输出是:
17/04/1962
-243219600 秒从 1970 年 1 月 1 日 00:00:00 UTC 在 javascript 是 here你得到正确的日期。
最佳答案
date()
的输出取决于配置的时区。如果您添加时间和时区,您可以看到它。在我的例子中是 CET:
echo date('d/m/Y H:m:i T', -243219600);
//prints: 18/04/1962 00:04:00 CET
date()
的解决方案
如果您希望date()
使用UTC
,请使用date_default_timezone_set
:
date_default_timezone_set('UTC');
echo date('d/m/Y H:m:i T', -243219600);"
输出
17/04/1962 23:04:00 UTC
(你看,因为现在是 UTC 午夜前一小时,日期取决于时区)
DateTime
的解决方案:
DateTime
类如果由 Unix 时间戳构造,则始终使用 UTC:
来自documentation :
Note:
The
$timezone
parameter and the current timezone are ignored when the$time
parameter either is a UNIX timestamp (e.g. @946684800) or specifies a timezone (e.g. 2010-01-28T15:00:00+02:00).
所以你也可以使用下面的代码:
echo (new DateTime('@-243219600'))->format('d/m/Y');
关于javascript - PHP 中的日期函数给出的日期总是晚一天,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32500442/