首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Laravel timestampTz列的时区错误

Laravel timestampTz列的时区错误
EN

Stack Overflow用户
提问于 2020-12-06 21:58:52
回答 2查看 267关注 0票数 2

我正在使用Postgres 13和Laravel 8.4.4

为定义为cast to datetime的Eloquent模型属性设置Unix时间戳1607207809,我们得到了正确的碳排放时间2020-12-05 22:36:49.0 +00:00

但是,保存此模型实例将导致保存2020-12-05 22:36:49-08。这不是正确的时区,导致时间不正确。

config/app.php中,时区设置为协调世界时。我的计算机的时区是太平洋时间,因此似乎以某种方式优先。你知道为什么吗?

我本以为时间戳是用碳编码的时区保存的,但显然不是这样的。

EN

回答 2

Stack Overflow用户

发布于 2020-12-10 15:30:06

我找到的最好的解决方案是在转换为datetime时在模型上定义$dateFormat = 'Y-m-d H:i:s P'

不应使用自定义转换类(https://laravel.com/docs/8.x/eloquent-mutators#custom-casts),因为在创建新对象时,尚未设置created_atupdated_at属性。

在没有定义$dateFormat的情况下,传递给created_atupdated_at的Cast类设置器的$value参数的格式为'Y-m-d H:i:s‘。

如果您的数据库服务器设置为与您的应用程序相同的时区,这不是问题,但会发生错误。

票数 1
EN

Stack Overflow用户

发布于 2020-12-10 15:40:24

您可以通过使用date_default_timezone_set函数设置时区来设置整个应用程序所使用的时区。

AppServiceProvier中添加以下代码

代码语言:javascript
运行
复制
public function boot(){
     date_default_timezone_set('Pacific/xxxxxx');
}

请在此处检查您的时区名称Pacific Zone

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65168887

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档