在 PHP 中将日期转换为 UTC



我有本地时区的这个日期"2019-07-27T02:00:00">

我正在尝试将其保存到 UTC 时区的数据库中,以便稍后处理它并从 UTC 转换为其他时区,

但是当我这样做时:

$date = new DateTime("2019-07-27T02:00:00");

我得到了一个:

DateTime @1564192800 {#519
  date: 2019-07-27 02:00:00.0 UTC (+00:00)
}

无论我在这里设置什么,

new DateTime("2019-07-26T06:00:00")

我仍然得到一个UTC时区,所以这个例子

$date = new DateTime("2019-07-26T06:00:00");

会得到我一个结果:

DateTime @1564120800 {#519
  date: 2019-07-26 06:00:00.0 UTC (+00:00)
}

就像日期的时区(2019-07-26T06:00:00(已经在UTC中?但不是(?因此,将其转换为 UTC

$date->setTimezone(new DateTimeZone('UTC')) 

完全没有影响。

PHP 可能认为你已经在 UTC 中,并接受任何没有将时区明确列为 UTC 的DateTime对象。

您可以通过查看php.ini文件或使用命令 echo date_default_timezone_get() 来检查 PHP 认为您的时区。同样,您可以通过编辑php.ini文件或使用 date_default_timezone_set() 来全局编辑时区。

这是 PHP 可以使用的时区列表。

 

作为旁注:尽管将全局时区设置为 UTC 并仅使用 DateTime/DateTimeZone 将局部变量设置为正确的偏移量似乎是个好主意,但不要这样做。它会影响日志的时间戳,并可能导致一些非常痛苦的陷阱。

相关内容

  • 没有找到相关文章

最新更新