我有一个Laravel项目,其中的MySQL DB设置为UTC时区。我希望能够根据客户端访问数据的位置将数据库中的UTC时区时间更改为各种时区。
我可以根据客户端在timezone
中动态设置config/app.php
参数,但是当我使用save
方法时,这似乎并不影响进入数据库的时间。使用Laravel方法(基本上所有内容都可以追溯到UTC)。
可能有很多方法可以实现这一点,但是经过大量的搜索之后,我找不到一种方法来获取UTC中的DB时间来切换到我选择的时区。
值得注意的是,我的项目有时使用Laravel模型进行查询,有时使用DB
类中的查询生成器。我不确定是否需要以不同的方式处理它们,但是都一样,我正在寻找一种可以处理两个用例的解决方案。谢谢。
答案 0 :(得分:1)
https://laravel.com/api/5.1/Illuminate/Console/Scheduling/Event.html#method_timezone
$data->setTimezone(Auth::user()->timezone)
答案 1 :(得分:0)
查尔斯,我很感谢您的回答,但是我最终意识到日期正确地进入了数据库,但是当我将它们与MySQL NOW()
函数进行比较时,NOW()
部分就是我需要转换。
这样,我最终使用如下的CONVERT_TZ
函数来获得我想要的东西:
CONVERT_TZ(NOW(), 'UTC', 'US/Eastern')
第三个参数被设置为变量,但是您明白了。另外,这感觉有点像骇客,但目前仍然有效。