如何在 Laravel 中查询带有时区的一天

How to query for a day with timezone in Laravel

在我的数据库中,我有 created_at 列存储以 UTC 时间创建记录时的日期时间,我还有一个列存储转换为用户时区的相同日期时间 created_timezone

在下面的代码中,我试图检查是否输入了当天的条目(相对于用户时区)

public static function isEntryMade($userID, $timezone)
{
    $day = Day::where('user_id', $userID)->whereDate('created_timezone', Carbon::today()->timezone($timezone))->get();
    return $day;
}

问题是结果是 returning 前一天的记录,我几乎可以肯定这是因为 timezone() 方法由于用户时区减去 5 小时 (America/Toronto).

我怎样才能return仅获取今天关于用户时区的记录。

为了澄清,我还将用户时区存储在数据库中,这就是 $timezone。此外,created_timezone 列是 created_at 时间,但针对用户时区

进行了解析

使用setTimezone()方法:

Carbon::now('UTC')->setTimezone('America/Toronto') 

这里 UTC 是您的应用时区