【问题标题】:How to get time in particular timezone in Laravel?如何在 Laravel 的特定时区获取时间?
【发布时间】:2021-09-22 10:34:40
【问题描述】:

我无法使用 Laravel 8 获取特定时区的时间。我尝试了以下方法:

Carbon::now(new \DateTimeZone('Indian/Mauritius'))

我也试过修改文件config\app.php中的timezone如下:

'timezone' => 'Indian/Mauritius'

它总是返回UTC 时间。如何在特定时区使用 Carbon 获取时间?

编辑:问题已解决,问题是由于序列化问题,检查here

【问题讨论】:

  • 更新config\app.php后运行这些命令, --> php artisan config:cache -->php artisan cache:clear
  • 你试过这个 Carbon::now()->timezone("Indian/Mauritius"); 吗?或如 PSA 建议的那样
  • @PSA,我试过了,不行
  • @JohnLobo,不,它不起作用。我在毛里求斯 15:15 收到 "2021-07-13T11:14:39.845698Z"
  • 您是否尝试在 AppServiceProvider 的启动方法中设置 date_default_timezone_set('Indian/Mauritius');

标签: laravel laravel-8 php-carbon


【解决方案1】:

这对我有用:

$dateNow = \Carbon\Carbon::now();
$dateNow->setTimezone('Indian/Mauritius');

【讨论】:

  • 什么意思? $dateNow 运行后没有价值?
  • 不,在毛里求斯 16:32 时,ypur 代码正在返回我 2021-07-13T12:32:11.585651Z
  • 我已经测试了我的代码,在 setTimezone() 之后检查了 $dateNow 变量并且值是正确的。我很确定您的意思是 JSON 响应中的数据值(您没有提到),问题出在序列化中。看看这个:stackoverflow.com/questions/60649769/…
  • 您可以通过简单地执行以下操作来检查:$dateNow = \Carbon\Carbon::now()->setTimezone('Indian/Mauritius')->toDateTimeString();
  • 你是对的,从没想过序列化问题
猜你喜欢
  • 1970-01-01
  • 2016-03-01
  • 1970-01-01
  • 2015-03-25
  • 2016-03-12
  • 1970-01-01
  • 2012-01-02
  • 2016-08-23
  • 1970-01-01
相关资源
最近更新 更多