我的情况是总是把日期晚一天。例如,我有这个值-243219600
,它相对于日期18/04/1962
date('d/m/Y', -243219600);
输出为:
17/04/1962
-243219600 seconds from January 1 1970 00:00:00 UTC in javascript is在这里你得到正确的日期。
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:
来自文档:
所以你也可以使用下面的代码:注意:
当
$time
参数是UNIX时间戳(例如@946684800)或指定时区(例如2010-01-28T15:00:00+02:00)时,$timezone
参数和当前时区将被忽略。
echo (new DateTime('@-243219600'))->format('d/m/Y');
检查PHP的时区,设置它与您的计算机相同(因为您使用javascript)