React-native-paper-date (y-off) のタイムゾーンの問題

WBOY
リリース: 2024-07-18 08:15:15
オリジナル
960 人が閲覧しました

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

今日の問題は、react-native-paper-dates の使用に問題があり、カレンダー モーダルに表示される曜日が正しくなかったことです。 1 日ずれていました。たとえば、今日は 2024 年 7 月 15 日で、15 日は月曜日の列に表示されるはずでしたが、代わりに日曜日の列に表示されました。

2 環境で以下のコードを実行してみたため、最終的に問題は Intl.DateTimeFormat に関係していることがわかりました。私のものと、Mozilla.dev 上の Javascript ランタイム (とても愚かなことだとわかっていますが、試してみました笑)。

console.log(Intl.DateTimeFormat().resolvedOptions().timeZone);
//"UTC" on my local development env
//"Asia/Phnom_Penh" on Mozilla.dev
ログイン後にコピー

手がかりが得られたので、同僚に愚痴をこぼしたところ、JavaScript の Intl がこのアプリでは安定していないと言われました。そこで彼は、Javascript のエンジンがデフォルトのタイムゾーンを公開しないため、そこからデフォルトのタイムゾーンを取得する方法がないことを述べた、この formatjs リンクを私に送ってきました。そして、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 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!