如何在laravel中转换时间?

问题描述 投票:0回答:1

在我的 laraval 服务项目中,我有一个共享不同时区的讲师、学生和管理员,我将它们存储在用户->时区列下。该项目的默认时区是 'timezone' => 'UTC'。一般来说,该项目的工作方式是让教师上传问题,以设定学生必须完成问题的截止日期。为了检索用户时区,我使用了 $userTimezone = auth()->user()->timezone ?? config('app.timezone');要将截止日期转换为用户时区,我使用 $deadline = Carbon::parse($result->instructor_dead_line)->setTimezone($userTimezone);

主要问题在于配置时区。为了设置和存储截止日期,教师使用普通的 DateTimePicker。如果讲师位于某个时区,假设为 UTC+5,并将问题的截止时间设置为 30/10/2024 6:00pm,则设置的时间将转换为 30/10/2024 11:00pm(提前 5 小时) )发布后。这需要教师在设置截止日期之前手动计算小时数。我正在考虑将讲师排除在时间转换之外,但有几个小时会被遗漏。如何确保讲师在发布问题时的时间不会根据他们的时区提前或推迟来解决此问题?

我将讲师排除在时区转换之外,但有几个小时下落不明,导致预计回答问题时剩余的额外时间字段。

laravel timezone
1个回答
0
投票

如果每个学生都有自己的时区,那么让老师在他们的时区设置截止日期,然后将其转换为学生的时区。

例如(补时间)

  • 讲师将截止时间设置为下午 6 点。
  • 学生A的截止日期是当地时间下午2点
  • 学生 B 的截止日期是当地时间晚上 10 点。

始终以 UTC 格式将您的时间存储在数据库中。 没有例外。 其他任何事情都会让你发疯。

© www.soinside.com 2019 - 2024. All rights reserved.