首頁  >  文章  >  web前端  >  關於react-native-paper-date(y-off)的時區問題

關於react-native-paper-date(y-off)的時區問題

WBOY
WBOY原創
2024-07-18 08:15:15962瀏覽

A timezone problem on react-native-paper-date (y-off)

今天的問題是我在使用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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn