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