react-native getTimezoneOffset仅在调试模式下有效

时间:2018-05-16 11:29:23

标签: react-native-android timezone-offset

我目前的时区是GMT + 1。最近,我注意到有时候我得到-60值,而其他时间我有0。

componentDidMount() {
  this.props.screenProps.showToast(new Date().getTimezoneOffset(), 1);
}

现在我意识到当我在chrome上调试它时会发生正确的时区,每当我关闭chrome中的远程调试时,我都会得到偏移值为0.

似乎Date()对象的处理方式因环境而异。

我正在测试的设备是android。另外,ios会有什么不同吗?

对此的任何澄清都会非常有用。

2 个答案:

答案 0 :(得分:0)

我认为这可能与您的体验有关。

  

JavaScript运行时使用React Native时,您将在两个环境中运行JavaScript代码:   在iOS模拟器和设备上,Android模拟器和设备React Native使用JavaScriptCore,它是为Safari提供动力的JavaScript引擎。在iOS上,由于iOS应用程序中缺少可写的可执行内存,因此JSC不使用JIT。   使用Chrome调试时,它会运行Chrome中的所有JavaScript代码,并通过WebSocket与本机代码进行通信。所以你使用的是V8。

我认为这会导致远程调试关闭/打开时的不一致。查找更多信息here

答案 1 :(得分:0)

尝试仅显示当前时间。如果它仍然表示错误的时间,那么问题在于JS引擎那些模拟器正在运行。尝试使用JS或任何其他轻量级时间库(如果它们适用于您的情况)。