Carbon 将 Iso 8601 字符串解析为 UTC 日期并将其记录到数据库
Carbon parse Iso 8601 string to UTC date and record it to db
我有以下 Iso8601 日期时间字符串 2018-03-12T10:34:15-0200
并且在我解析它之后
Carbon::parse("2018-03-21T10:34:15-0200", 'UTC')
并将其保存到 mysql db datetime
列我有 2018-03-21 10:34:15
所以我已经失去了与 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
我有以下 Iso8601 日期时间字符串 2018-03-12T10:34:15-0200
并且在我解析它之后
Carbon::parse("2018-03-21T10:34:15-0200", 'UTC')
并将其保存到 mysql db datetime
列我有 2018-03-21 10:34:15
所以我已经失去了与 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