登录
首页 >  文章 >  前端

关于react-native-paper-date(y-off)的时区问题

来源:dev.to

时间:2024-07-16 08:36:48 388浏览 收藏

小伙伴们有没有觉得学习文章很有意思?有意思就对了!今天就给大家带来《关于react-native-paper-date(y-off)的时区问题》,以下内容将会涉及到,若是在学习中对其中部分知识点有疑问,或许看了本文就能帮到你!

关于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.datetimeformat() 时它总是默认为“utc” .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)的时区问题》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:dev.to 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>