首页 > web前端 > js教程 > 正文

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

WBOY
发布: 2024-07-18 08:15:15
原创
1002 人浏览过

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中文网其他相关文章!

来源:dev.to
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板