Laravel Carbon返回错误的时间

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

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

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

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

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

任何人都可以帮助我解决此问题吗?

enter image description here

php laravel php-carbon laravel-7
1个回答
0
投票

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

当Carbon实例在JSON响应中输出时,它总是以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

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