如何查询用户时区的结果?
我所有的用户都有一个timezone
属性,例如:
Auth::user()->timezone; // America/Toronto
应用程序配置时区和数据库时区设置为UTC。每个用户可以具有不同的时区。问题是我正在尝试过滤today
的记录,它也提供了昨天的结果:
$query->whereDate($column, Carbon::now())
我知道这是因为偏移。我试过使用这没有什么不同:
$query->whereDate($column, Carbon::now()->tz(Auth::user()->timezone)
如何使用UTC根据数据库值在用户时区中获取当日正确的结果?
答案 0 :(得分:0)
您可以尝试添加以下日期范围:
$query->whereDate($column, ">=", Carbon::now()->startOfDay()->tz(Auth::user()->timezone)
->whereDate($column, "<=", Carbon::now()->endOfDay()->tz(Auth::user()->timezone);
此处的关键是使用默认时区确定当天的开始和结束,然后将这些时间戳转换为当前用户的时区。
我希望这会有所帮助!