Laravel Углерод возвращает неверное время - PullRequest
1 голос
/ 30 мая 2020

У меня проблема с моим приложением Laravel, которое я разрабатываю, время возврата неверно, я указал часовой пояс для файлов config/app.php и php.ini, а также очистил кеш на Laravel используя следующие команды:

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

Кроме того, я перезапустил службу PHP после изменения часового пояса в файле php.ini. Я использую XAMPP в качестве сервера.

Обратите внимание: единственное правильное время - использовать чистую функцию php!

Любой может помочь мне решить эту проблему проблема?

enter image description here

1 Ответ

0 голосов
/ 30 мая 2020

Время правильное: Z в конце строки означает GMT (часовой пояс Zulu).

Когда экземпляр 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')

Так что система / браузер в другом часовом поясе не испортят его.

Тем не менее, лучший шаг - работать с UT C на стороне вашего сервера и используйте Азию / Эр-Рияд только в самый последний момент, когда вы хотите отобразить дату для конкретного пользователя, который, как вы знаете, находится в этом часовом поясе.

Я объяснил это более подробно здесь : https://medium.com/@kylekatarnls / always-use-ut c -dates-and-times-8a8200ca3164

...