Heim  >  Artikel  >  Web-Frontend  >  Ein Zeitzonenproblem beim React-Native-Paper-Date (y-off)

Ein Zeitzonenproblem beim React-Native-Paper-Date (y-off)

WBOY
WBOYOriginal
2024-07-18 08:15:15960Durchsuche

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

Das heutige Problem ist, dass ich ein Problem mit der Verwendung von React-Native-Paper-Dates habe und die Wochentage im Kalender angezeigt werden. Modal war nicht korrekt. Es lag um einen Tag daneben, zum Beispiel ist heute der 15. Juli 2024 und der 15. sollte eigentlich in der Montag-Kolumne erscheinen, aber stattdessen stand er stattdessen in der Sonntag-Kolumne.

Irgendwann habe ich herausgefunden, dass das Problem etwas mit Intl.DateTimeFormat zu tun hat, weil ich versucht habe, den folgenden Code in einer 2-Umgebung auszuführen; meines und eine Javascript-Laufzeitumgebung auf Mozilla.dev (ich weiß, es ist so albern, aber ich habe es versucht, lol).

console.log(Intl.DateTimeFormat().resolvedOptions().timeZone);
//"UTC" on my local development env
//"Asia/Phnom_Penh" on Mozilla.dev

Jetzt habe ich es verstanden, also jammere ich zu meinem Kollegen und er erwähnte, dass Javascripts Intl für unsere App nicht stabil ist. Also schickte er mir diesen Formatjs-Link hierher, in dem erwähnt wurde, dass die Javascript-Engine keine Standardzeitzone bereitstellt, sodass es keine Möglichkeit gibt, daraus die Standardzeitzone abzurufen. und unsere native React-App verwendet Hermes Engine, von der ich annehme, dass sie Javascripts Intl nichts über die Zeitzone preisgibt, weshalb standardmäßig immer „UTC“ verwendet wird, wenn ich versuche, console.log(Intl.) auszuführen .DateTimeFormat().resolvedOptions().timeZone) .

Jetzt, wo ich meine Antwort bekommen habe; Ich probiere einfach den folgenden Code aus und das Problem ist behoben. Durch die richtige Zeitzone sind die Wochentage jetzt in jeder Spalte des Kalendermodals korrekt.

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')
}

Das obige ist der detaillierte Inhalt vonEin Zeitzonenproblem beim React-Native-Paper-Date (y-off). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn