某些设备中的时区错误 - React Native

Posted

技术标签:

【中文标题】某些设备中的时区错误 - React Native【英文标题】:Wrong timezone in some devices - React Native 【发布时间】:2020-02-11 02:12:49 【问题描述】:

我有一个在各种设备上运行的 react-native 应用程序。无论我在哪里使用来自new Date()moment 或任何其他库的时间或日期时间,某些设备都会在应用程序中显示错误的时间。实际设备时间相对于时区是正确的,但即使设备中的时区设置已正确设置(尝试使用自动和手动设置时区),它也会在具有不同时区的应用程序内显示不同的时间。

我在 *** 和 react-native 的 git 问题上遇到了类似的问题,指出可以通过手动更新 jsc-android 包来修复它。我已经在应用程序中安装了最新版本的 jsc-android,但也面临同样的问题。即使在最新版本的react-native: 0.61 上也会发生这种情况。

其中一款设备是 Redmi Note 5(android 版本 8.1.0)。

这是一个示例应用程序的屏幕截图(请忽略橙色条纹),显示不正确的时区。实际时区为 IST(印度标准时间)

您可以在状态栏(11:21 AM)应用时间(3:51 AM)比较系统时间。

这是上述输出的代码(App.js)


    import React from 'react';
    import 
      View,
      Text,
      StatusBar,
     from 'react-native';
    import moment from 'moment';
    
    const App = () =>   
      return (
        <View style=flex: 1, justifyContent: 'center', alignItems: 'center' >
          <StatusBar barStyle="dark-content" />
          <Text>Time: moment(new Date()).format("h:mm A")</Text>
          <Text>Time String: new Date().toTimeString()</Text>
          <Text>Time Offset: new Date().getTimezoneOffset()</Text>
          <Text>Static Time (5:21 PM): moment(new Date("2019-09-23T11:51:29.184Z")).format("h:mm A")</Text>
        </View>
      );
    ;
    
    export default App;

有什么建议吗???

【问题讨论】:

在您更改系统时区之后会发生这种情况吗?如果您重新启动应用程序,或者重新启动整个设备会怎样?换句话说,它是否可能与您的应用(或其环境)缓存它首次加载的时区有关? @MattJohnson-Pint,不,我刚刚检查了系统时区,让它保持默认值。我最初没有更改时区。由于它没有按预期工作,我尝试将时区手动设置为 IST,但它也显示了错误的时间。 那很奇怪。也许您可以向我们展示创建此示例应用程序的确切代码?真的只是new Date().toString()吗? @MattJohnson-Pint,我已经用代码更新了问题。 不,@HenriqueBruno,我没有使用 jscFlavor Intl。我也会尝试那个解决方案。 【参考方案1】:

每次我需要从某个位置获取正确的日期时,我都会使用这个 API:http://worldtimeapi.org/timezone/America/Sao_Paulo

也许对你有帮助!

【讨论】:

实际上,我在整个应用程序中都从new Date()moment 获得了日期和时间。所以如果我需要更新这个 API 的代码,那么这将成为一项大工作,因为很多地方都使用了日期和时间。有没有其他方法可以在某些设备或更改javascriptnew Date()时区的地方找到这种情况?

以上是关于某些设备中的时区错误 - React Native的主要内容,如果未能解决你的问题,请参考以下文章

React Native WebView 在某些设备上不起作用

navigator.geolocation.getCurrentPosition() 方法在某些设备中返回位置请求超时 react-native

如何在 React Native 中根据设备类型设置强制设备方向?

如何修复 React Native 中的 Firebase/firestore 错误?

React-Native,Pdf 在 android 模拟器上显示,但在实际的 android 设备上出现错误

Android 设备上的 Apollo 网络错误(React Native)