今天的問題是我在使用react-native-paper-dates時遇到問題,並且日曆模態上顯示的工作日不正確。關閉了 1 天,例如今天是 2024 年 7 月 15 日,15 日本來應該出現在星期一欄,但結果卻出現在星期日欄。
最後我發現問題與Intl.DateTimeFormat 有關,因為我嘗試在2 個環境中執行以下程式碼;我的和Mozilla.dev 上的Javascript 執行時間(我知道這很愚蠢,但我試過,哈哈) 。
console.log(Intl.DateTimeFormat().resolvedOptions().timeZone); //"UTC" on my local development env //"Asia/Phnom_Penh" on Mozilla.dev
現在我得到了線索,所以我向我的同事抱怨,他提到 Javascript 的 Intl 對於我們的應用程式來說不穩定。所以他在這裡向我發送了這個formatjs 鏈接,其中提到Javascript 的引擎不會公開默認時區,因此無法從中獲取默認時區;我們的React 本機應用程序正在使用Hermes Engine,我認為它不會向Javascript 的Intl 公開任何有關時區的信息,這就是為什麼當我嘗試運行console.log(Intl 時它總是默認為“UTC” .DateTimeFormat().resolvedOptions().timeZone) 。
現在我得到了答案;我只是嘗試下面的程式碼,問題就解決了。透過使用正確的時區,日曆模態上每一列的工作日現在都是正確的。
import '@formatjs/intl-datetimeformat/polyfill' import '@formatjs/intl-datetimeformat/add-all-tz.js' //If this statement doesn't work, use expo-localization's getCalendar() const timezone = Intl.DateTimeFormat().resolvedOptions().timeZone //For my case, I have to use expo-localization const timezone = Localization.getCalendars()[0].timezone if ('__setDefaultTimeZone' in Intl.DateTimeFormat) { Intl.DateTimeFormat.__setDefaultTimeZone('America/Los_Angeles') }
以上是關於react-native-paper-date(y-off)的時區問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!