【问题标题】:Laravel timezone settings not taking effectLaravel 时区设置不生效
【发布时间】:2018-08-15 21:00:16
【问题描述】:

我正在开发一个 Laravel 应用程序,它在 config/app.phpconfig/database.php 文件中将时区设置为 UTC,并且 MySQL 服务器上的时区设置为 America/丹佛,并且无法在此处更改,因为我们有多个应用程序使用该服务器。

问题是,在保存带有时间戳的新模型时,created_at/updated_at 设置在 America/Denver 时区,而我需要它们使用 UTC 时区。我玩了很多,但没有运气尝试了以下方法:

确保没有按照herehere 的建议错误缓存时区设置:

$ php artisan cache:clear    
$ php artisan view:clear
$ php artisan config:cache

按照herehere 的建议和here 的概述将我的PHP 脚本时区设置为UTC

date_default_timezone_set('UTC')

按照建议 here 和概述的 here 将 MySQL 会话时区设置为 UTC

DB::statement("SET time_zone='UTC';")
DB::select('SELECT @@global.time_zone, @@session.time_zone;')

我没有想法。任何建议都会很棒!

【问题讨论】:

    标签: php mysql laravel datetime timezone


    【解决方案1】:

    好吧……

    看来我的日期确实存储在 UTC 但在当地时间显示...我没想到会出现这种行为,因为我来自 SQL Server 背景并且以前从未遇到过这种情况。我通过创建一些模型记录,然后使用 UTC 将它们选择出来,并收到正确的记录来测试事实是否如此。似乎很好走,只是有点混乱。如果您对 MySQL 为何会以 UTC 存储日期时间但以本地服务器时间显示它们有一个解释,那将很有帮助!

    谢谢!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-02-04
      • 1970-01-01
      • 1970-01-01
      • 2017-06-23
      • 1970-01-01
      • 2016-10-09
      • 2015-10-07
      相关资源
      最近更新 更多