Carbon 将 Iso 8601 字符串解析为 UTC 日期并将其记录到 db

Bat*_*Man 4 php mysql utc iso8601 php-carbon

我有以下 Iso8601 日期时间字符串2018-03-12T10:34:15-0200,在我解析它之后

Carbon::parse("2018-03-21T10:34:15-0200", 'UTC')
Run Code Online (Sandbox Code Playgroud)

并将其保存到datetime我拥有的mysql db列中,2018-03-21 10:34:15因此我失去了-0200与 UTC 时区的小时差异。

任何想法如何以正确的方式解决它?

Ved*_*ant 16

您不需要将时区作为解析函数的第二个参数传递。时区已经是日期字符串的一部分。如果您需要在 UTC 中保存日期,只需在解析后将其转换为 UTC 时区,如下所示:

Carbon::parse("2018-03-21T10:34:15-0200")->setTimezone('UTC')
Run Code Online (Sandbox Code Playgroud)

转换日期将为:2018-03-21 12:34:15.0 UTC (+00:00)