我在我的Laravel API项目中使用Carbon,当我试图设置时区并在用户的时区中获取日期时间时,由于某种原因,我正在获取UTC值,我做错了什么?
// $user->timezone will give me "America/Curacao" or whatever their time zone is
$curr = Carbon::now()->setTimezone($user->timezone)
但当我回显$curr
的内容时,我得到的UTC时间是:
2021-04-05T1:58:35.186750Z
我缺少什么?
您获得的ISO-8601字符串是JSON中日期的标准格式。但对象正确地位于America/Curacao
时区。如果您想将其传递给浏览器中的Date
对象,则不需要时区,只需按原样传递此字符串即可。
如果你想格式化用户看到的日期,那么只需在设置时区后选择格式:
$curr = Carbon::now()->setTimezone($user->timezone)->format('Y-m-d H:i:s')
或者任何与您相关的格式。
你应该在你的应用程序设置中保留'timezone' => 'UTC'
,因为你的用户可能有任何不同的时区,而UTC更不可知,可以用来保存它们的后端。