【发布时间】:2023-03-10 03:11:01
【问题描述】:
我有一项服务,用户可以在其中创建活动并参与所述活动。在活动创建时,用户可以指定开始、结束日期和时间,然后填写活动将要发生的时区。完成后,他们可以邀请其他用户参与活动。
当成员访问活动页面时,一段后端逻辑会根据活动的开始时间检查当前时间。如果当前时间(用户/用户的时区)在活动的开始和结束时间之内,则用户将能够参加活动(允许他们访问可以进行视频会议的走廊页面)。
我的问题是比较不同时区的日期。我使用默认的 UTC 时区保存所有日期。开始日期的示例
date: 2019-07-27 11:00:00.0 UTC (+00:00)
然后将 $now 与它进行比较。 $now 是下面的例子
date: 2019-07-27 18:11:18.747797 Asia/Beirut (+03:00)
$now 是这样分配的
$now = Carbon::now()->tz($userProfile->timezone->key);
但是当我进行诸如
之类的比较时$now->lte($event->ends_at)
我得到了一个错误的评估,即使 $now 晚于 $event->ends_at 它仍然评估为 true。是否需要评估具有不同时区的日期?
【问题讨论】:
标签: php laravel date timezone php-carbon