我正在按日期时间排序事件列表,这样做很好,但是当某些项目应用了时区时会出现问题—它们的排序不正确。例如
活动1-2018年6月20日15:00:00结束(欧洲/伦敦)
事件2-2018年6月20日13:00:00结束(美国/东部)
当这些按日期升序排列时,“事件2”显示在“事件1”之前,因为时区被忽略(实时时是2小时之后)
我曾尝试使用laravel中的mutator将datetimes和timezones转换为时间戳:
public function getDatetimeTzSecondsAttribute()
{
$newDate = new Carbon($this->attributes['date_finish'], $this->attributes['timezone']);
return $newDate->toTimeString();
}
但要明白,这是行不通的,因为在获取结果之后,会处理变种。我对结果使用分页-如果可能的话,通过查询生成器/eloquent对数据排序的最佳方式是什么?
1条答案
按热度按时间fcipmucu1#
如果这对任何人都有帮助的话,我在几个小时的脑痛之后想出了一个非常简单的解决办法。。。
使用mysql的“convert\u tz”函数将时区设置更改为utc:
然后按新的转换日期列(如果已设置)和标准日期列排序:
天才!:)