碳解析 ISO 8601 字符串到 UTC 日期并将其记录到 db



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

Carbon::parse("2018-03-21T10:34:15-0200", 'UTC')

并将其保存到我2018-03-21 10:34:15datetimemysql db 中,因此我丢失了与 UTC 时区的-0200小时差。

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

您无需将时区作为第二个参数来解析函数。时区已经是日期字符串的一部分。如果您需要以 UTC 格式保存日期,只需在解析后将其转换为 UTC 时区:

Carbon::parse("2018-03-21T10:34:15-0200")->setTimezone('UTC')

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

你可以尝试这样的事情:

Carbon::parse("2021-12-23T07:42:42.393Z")->setTimezone('UTC')->format('Y-m-d H:i:s');

结果会像2021-12-23 07:42:42.