如何根据没有日期的用户时区转换时间php laravel

分享于2022年07月17日 datetime laravel php php-carbon utc 问答
【问题标题】:how to convert time according to User time zone without date php laravel如何根据没有日期的用户时区转换时间php laravel
【发布时间】:2022-07-06 02:39:28
【问题描述】:

我在数据库中有一个名为 USERSHIFTS 的表,它有两个 TIME 类型的列以及其他列,第一个是 start_time ,第二个是 end_time ,两者都有 TIME datatype 。我不允许将这些列类型更改为 datetime or timestamp 。并且也不允许在表中创建另一列。现在我的任务是根据用户 timezone 显示已存储在 start_time end_time 列中的时间,例如 UTC timezone 用户应该能够根据 UTC 时区和其他时区用户进行计时按照他的时区应该也能看到这个时间。 现在的问题是我应该如何在数据库中存储时间以及我应该在哪个时区存储时间。最后一个问题是我应该如何根据不同的时区显示时间。 我尝试了以下代码,但您可以看到我必须处理日期才能执行此操作。而且我不想约会。

 $s_time=date('Y-m-d '.$shift->start_time.'');
 $start_time = \Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $s_time, 'UTC');
 $e_time=date('Y-m-d '.$shift->end_time.'');


 $end_time = \Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $e_time, 'UTC');


【解决方案1】:
 $start_time = \Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $shift->start_time, 'UTC')->format('Y-m-d H:i:s');
 $end_time = \Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $shift->end_time, 'UTC')->format('Y-m-d H:i:s');

【讨论】:

  • 谢谢朋友让我测试
  • 发现意外数据。发现意外数据。数据缺失