某些设备中的时区错误 - 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 错误?