如何在 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
是您的应用时区
在我的数据库中,我有 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
是您的应用时区