php - Carbon 将 Iso 8601 字符串解析为 UTC 日期并将其记录到数据库

标签 php mysql utc php-carbon iso8601

我有以下 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 所以我丢失了 -0200 与 UTC 时区的时差。

关于如何以正确的方式解决它有什么想法吗?

最佳答案

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

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

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

关于php - Carbon 将 Iso 8601 字符串解析为 UTC 日期并将其记录到数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52505498/

相关文章:

php - 在 Woocommerce 3 中以编程方式更改全局产品类别的产品价格

PHP:联系表单错误 undefined index 和变量

php - mysql 错误未正确显示

mysql - 单击按钮将 (form1) Datagridview "ID"单元格内容传递到文本框中的 (form2)

linux - 时间差在Linux中使用mktime函数

javascript - Moment.js 将 UTC 时间作为日期对象而不是字符串获取

php - MySql SELECT 查询中包含大量数字的 IN 子句处理缓慢

MySQL wait_timeout 变量 - GLOBAL vs SESSION

java - 如何将 XMLGregorianCalendar 时间生成为 UTC

PHP - DynamoDB - 唯一键