php - Laravel 时区设置未生效

标签 php mysql laravel datetime timezone

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

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

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

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

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

date_default_timezone_set('UTC')

按照建议将 MySQL session 时区设置为 UTC here并概述here :

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

我没主意了。任何建议都会很棒!

最佳答案

好吧...

看来我的日期确实存储在 UTC 中,但显示为本地时间...我没有预料到这种行为,因为我来自 SQL Server 背景并且以前从未遇到过这种情况。我通过创建一些模型记录,然后使用 UTC 选择它们,并收到正确的记录来测试事实是否如此。看起来不错,只是有点困惑。如果您能解释为什么 MySQL 会以 UTC 存储日期时间,但以本地服务器时间显示它们,那将会很有帮助!

谢谢!

关于php - Laravel 时区设置未生效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49157335/

相关文章:

php - 使用 HTML/PHP 从 SQL 数据库创建列表

php - 在 Laravel 中翻译为特定语言

laravel - Homestead 多个网站无法正常工作

php - 将txt文件读入二维数组

php - 位掩码如何工作?

mysql - 如何对另一个表中的行进行有效的计数(连接)

mysql - 使用 Eloquent 实现 Laravel 4 数据透视表

php - 如何在 MySQL 查询中指定数据库?

php - 许多(许多)SQL JOIN 与多个查询

mysql - 在mysql中将varchar转换为二进制?