【问题标题】:PHP time for Berlin is off柏林的 PHP 时间已关闭
【发布时间】:2020-04-27 14:13:07
【问题描述】:

我有以下 PHP 代码:

<!DOCTYPE html>
<html>
<body>

<?php
$date = date_create("2020-04-27T15:27:59+00:00", new DateTimeZone("Europe/Berlin"));
echo $date->setTimezone(new DateTimeZone("Europe/Berlin"))->format('Y-m-d H:i:s');
?>

</body>
</html>

我预计我的输出是:2020-04-27 15:27:59 相反,我得到:2020-04-27 17:27:59 那么这两个多小时从何而来?我不明白我做错了什么。

【问题讨论】:

  • 我不知道你为什么要在输出日期之前再次设置时区,但如果你删除它,你会得到预期的结果
  • 澄清一下,您的时间字符串中的 +00:00 指定了 UTC,它会覆盖您传入的时区。
  • 啊,好吧...现在很明显了!谢谢。我的想法太复杂了:-)

标签: php datetime timezone


【解决方案1】:

这是因为柏林从 last Sunday of March 开始的 00:00 (UTC) 提前 2 小时。由于您指定 00:00 (UTC) 时区,然后将其转换为欧洲/柏林,因此它变为 +2 小时。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-05-19
    • 1970-01-01
    • 2019-06-22
    • 1970-01-01
    • 2021-04-29
    • 2012-01-29
    • 2019-08-24
    • 2021-05-03
    相关资源
    最近更新 更多