我目前的时区是GMT + 1。最近,我注意到有时候我得到-60值,而其他时间我有0。
componentDidMount() {
this.props.screenProps.showToast(new Date().getTimezoneOffset(), 1);
}
现在我意识到当我在chrome上调试它时会发生正确的时区,每当我关闭chrome中的远程调试时,我都会得到偏移值为0.
似乎Date()对象的处理方式因环境而异。
我正在测试的设备是android。另外,ios会有什么不同吗?
对此的任何澄清都会非常有用。
答案 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或任何其他轻量级时间库(如果它们适用于您的情况)。