首页 > 解决方案 > 数据库不会存储正确的时区

问题描述

我正在尝试保存使用特定时区的日期的记录。

  1. 日期采用碳格式。
  2. 数据库使用 postgresql 11,数据类型timestamp_with_timezone
  3. APP_TIMEZONE设置UTC.env

这是$record 之前的转储 $record->save()

"started_at" => Carbon @1583895600 {#920
  date: 2020-03-11 10:00:00.0 Asia/Bangkok (+07:00)
}
"finished_at" => Carbon @1584104400 {#2112
  date: 2020-03-13 20:00:00.0 Asia/Bangkok (+07:00)
}

这是保存后查询日志中的内容

0 => Carbon @1583895600 {#920
  date: 2020-03-11 10:00:00.0 Asia/Bangkok (+07:00)
}
1 => Carbon @1584104400 {#2112
  date: 2020-03-13 20:00:00.0 Asia/Bangkok (+07:00)
}

这是转储Model::find($record->id)

"started_at" => "2020-03-11 10:00:00-07"
"finished_at" => "2020-03-13 20:00:00-07"

它变成了负号而不是正号,我不知道是什么原因造成的。我试图用字符串而不是 Carbon 保存日期,2020-03-11 10:00:00 +07:00但它产生完全相同的结果。更糟糕的是,它是随机发生的。它在我的笔记本电脑、登台服务器上运行良好,但在我同事的一些笔记本电脑和生产服务器上却不行。我已经确认每个人都在使用相同的环境。

可能是什么原因?

标签: phppostgresqltimezonelumenphp-carbon

解决方案


推荐阅读