拉拉维尔在哪里日期用户时区



如何查询用户时区的结果?

我所有用户都有一个timezone属性,例如:

Auth::user()->timezone; // America/Toronto

应用配置时区和数据库时区设置为 UTC。每个用户可以有不同的时区。问题是我正在尝试过滤today记录,它也给了我昨天的结果:

$query->whereDate($column, Carbon::now())

我知道这是因为偏移量。我试过使用它,这没有区别:

$query->whereDate($column, Carbon::now()->tz(Auth::user()->timezone)

如何使用 UTC 根据数据库值获取用户时区中当天的正确结果?

您可以尝试添加如下日期范围:

$query->whereDate($column, ">=", Carbon::now()->startOfDay()->tz(Auth::user()->timezone)
->whereDate($column, "<=", Carbon::now()->endOfDay()->tz(Auth::user()->timezone);

这里的关键是使用默认时区确定当天的开始和结束,然后将这些时间戳转换为当前用户的时区。

我希望这有帮助!

最新更新