오늘의 문제는 React-native-paper-dates를 사용하는 데 문제가 있고 Calendar Modal에 나타나는 평일이 올바르지 않다는 것입니다. 예를 들어 오늘은 2024년 7월 15일이고 15일은 월요일 열에 표시되어야 했지만 대신 일요일 열에 표시되었습니다.
결국 두 가지 환경에서 아래 코드를 실행해 보았기 때문에 문제가 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') }
위 내용은 반응 네이티브 종이 날짜(y-off)의 시간대 문제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!