【问题标题】:Laravel Carbon returns incorrect timeLaravel Carbon 返回错误的时间
【发布时间】:2020-09-17 19:04:31
【问题描述】:

我正在开发的 Laravel 应用程序出现问题,返回时间不正确,我确实在 config/app.phpphp.ini 文件上指定了时区,并且我确实使用以下命令清除了 Laravel 上的缓存命令:

php artisan cache:clear
php artisan view:clear
php artisan config:cache

另外,在php.ini 文件中更改时区后,我重新启动了我的 PHP 服务。 我使用 XAMPP 作为服务器。

请注意:唯一正确的时间是使用纯php函数!

谁能帮我解决这个问题?

【问题讨论】:

    标签: php laravel php-carbon laravel-7


    【解决方案1】:

    时间正确:字符串末尾的Z表示GMT(祖鲁时区)。

    当在 JSON 响应中输出 Carbon 实例时,它始终转换为 ISO-8601 字符串并以 GMT 时区给出,因为这是在系统之间交换日期信息的标准且非常推荐的方式(在 JSON API 中也是如此)。如果您尝试在浏览器中传递new Date('2020-08-20T06:46:34.407Z'),您会看到它已被浏览器自动转换为用户时区。

    如果你尝试:

    Carbon::now()->format('Y-m-d H:i:s.u')
    

    您会看到它使用您选择的时区。你也让它出现在输出中:

    Carbon::now()->format('Y-m-d H:i:s.u e')
    

    所以不同时区的系统/浏览器不会搞砸。

    仍然最好的做法是在服务器端使用 UTC,并且仅在您想在您知道处于该时区的特定用户上显示日期的最后时刻使用 Asia/Riyadh。

    我在这里更详细地解释了它:https://medium.com/@kylekatarnls/always-use-utc-dates-and-times-8a8200ca3164

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-16
      • 2020-11-23
      • 2021-08-27
      • 2018-01-10
      • 2018-06-27
      • 2021-09-27
      • 2019-02-07
      • 2020-10-26
      相关资源
      最近更新 更多