3

我的情况是总是落后一天。例如,我有这个-243219600相对于日期18/04/1962

之后

date('d/m/Y', -243219600);

输出是:

17/04/1962

-243219600秒从 1970 年 1 月 1 日 00:00:00 UTC 在javascript得到正确的日期。

4

2 回答 2

5

的输出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:

文档中:

笔记:

当参数是 UNIX 时间戳(例如@946684800)或指定时区(例如2010-01-28T15:00:00+02:00$timezone )时,将忽略参数和当前时区。$time

因此,您也可以使用以下代码:

echo (new DateTime('@-243219600'))->format('d/m/Y');
于 2015-09-10T11:35:17.193 回答
2

检查您的 PHP 的时区,将其设置为与您的计算机相同(因为您使用的是 javascript)。

于 2015-09-10T11:25:17.203 回答