我正在开发的Laravel应用存在问题,返回时间不正确,我确实在config/app.php
和php.ini
文件上都指定了时区,并且使用以下命令清除了Laravel上的缓存:
php artisan cache:clear
php artisan view:clear
php artisan config:cache
此外,我在更改php.ini
文件中的时区后重新启动了PHP服务。我正在使用XAMPP作为服务器。
请注意:唯一正确的时间是使用纯PHP函数!
任何人都可以帮助我解决此问题吗?
时间正确:字符串末尾的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