php - 数据库不会存储正确的时区
问题描述
我正在尝试保存使用特定时区的日期的记录。
- 日期采用碳格式。
- 数据库使用 postgresql 11,数据类型
timestamp_with_timezone
- 被
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
但它产生完全相同的结果。更糟糕的是,它是随机发生的。它在我的笔记本电脑、登台服务器上运行良好,但在我同事的一些笔记本电脑和生产服务器上却不行。我已经确认每个人都在使用相同的环境。
可能是什么原因?
解决方案
推荐阅读
- c# - 这个压缩算法是什么?
- csv - 如何使用 AWS DMS 将数字从 CSV 文件迁移到 Redshift?
- c# - 每次在 iOS 上使用 PWA 登录的问题
- java - 尝试将 JSONArray 转换为 JSONObject
- tensorflow - 如何在 Keras / Tensorflow 中将(无,)批量维度重新引入张量?
- windows - Windows exe 以编程方式检测其从 UI 启动?
- mysql - 在 Laravel 5.7 的数据库中存储时将外键设置为字符串
- javascript - onLine API 在任何浏览器中都不起作用
- regex - 正则表达式匹配最后一次匹配后的第一个单词 /
- silverlight - 使用 Silverlight 和异步加载进行打印