Laravel 檔案說:
...強烈建議您始終使用此序列化格式,并通過不更改應用程式的時區配置選項的默認 UTC 值來將應用程式的日期存盤在 UTC 時區。...
我很困惑,我應該如何/何時更改日期的時區?我知道如果我將 UTC 日期傳遞給 javascript,它將被轉換為用戶的時區(使用 new Date(),對嗎?)但是如果我要直接向用戶顯示資料而不通過 javasacript 呢?(如刀片頁面,生成 pdf ......),我如何確保整個應用程式的時區相同?我知道 Carbon 可用于轉換日期時區,但我不想每次都手動進行轉換,我應該添加自定義配置變數還是有更好的方法來做到這一點?
uj5u.com熱心網友回復:
在以下情況下應更改時區:
- 給用戶時區:當您提供日期時
- 到 UTC:當您從用戶輸入中獲取日期時
我個人為此使用宏
Carbon::macro('toUTC', fn() => $this->setTimezone('UTC'));
Carbon::macro('toUserTimezone', fn(?User $user = null) => $this->setTimezone('Europe/Zurich'));
然后我像這樣使用它
{{ $date->toUserTimezone()->isoFormat('LL') }}
關于這一點的旁注:
鼓勵使用 UTC 的一些原因,
- 這是因為在世界各地和/或其他不同時區的國家作業更容易
- 使用日期和時區時存在已知問題:https : //github.com/techouse/php-date-interval-timezone-bug
我相信還有更多內容,如果您知道,請隨時發表評論。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/372559.html
