我有本地时区的这个日期"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
将局部变量设置为正确的偏移量似乎是个好主意,但不要这样做。它会影响日志的时间戳,并可能导致一些非常痛苦的陷阱。