【问题标题】:How to query for a day with timezone in Laravel如何在 Laravel 中查询带有时区的一天
【发布时间】:2022-01-04 15:37:14
【问题描述】:

在我的数据库中,我有一个 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;
}

问题是结果返回前一天的记录,我几乎可以肯定这是因为timezone() 方法由于用户时区(美国/多伦多)而减去了 5 小时。

我怎样才能让它只返回今天关于用户时区的记录。

为澄清起见,我还将用户时区存储在数据库中,这就是$timezone 的含义。此外,created_timezone 列是 created_at 时间,但解析为用户时区

【问题讨论】:

  • @sta 工作,谢谢

标签: laravel eloquent php-carbon


【解决方案1】:

使用setTimezone()方法:

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

这里UTC 是您的应用时区

【讨论】:

    猜你喜欢
    • 2019-11-16
    • 2014-01-11
    • 2017-08-17
    • 2016-07-09
    • 2012-02-06
    • 1970-01-01
    • 2018-05-31
    • 2021-06-15
    • 1970-01-01
    相关资源
    最近更新 更多