<Text style={s.date}>{ new Date(this.props.order.ordered_at).toLocaleDateString('en-US', { day: '2-digit', month: 'short' }) }</Text>
<Text style={s.time}>({ new Date(this.props.order.ordered_at).toLocaleTimeString('en-US', { hour: '2-digit', minute:'2-digit', hour12: true }) })</Text>
JS远程调试关闭时的输出
02/13/17 (23:51:31)
02/13/17 (23:48:07)
启用JS远程调试时的输出
Feb 13 (11:51 PM)
Feb 13 (11:48 PM)
造成这种情况的原因以及如何解决?
答案 0 :(得分:7)
import moment from 'moment';
<Text style={s.date}>{ moment(new Date(this.props.order.ordered_at)).format('ll') }</Text>
<Text style={s.time}>{ moment(new Date(this.props.order.ordered_at)).format('LT') }</Text>
将始终如一地产生
Feb 13, 2017 (11:51 PM)
Feb 13, 2017 (11:48 PM)
为什么通常的Date()
方式不起作用?
JavaScript运行时使用React Native时,您将在两个环境中运行JavaScript代码:
- 在iOS模拟器和设备上,Android模拟器和设备React Native使用JavaScriptCore,它是强大的JavaScript引擎 苹果浏览器。在iOS上由于缺少可写,JSC不使用JIT iOS应用程序中的可执行内存。
- 使用Chrome调试时,它会运行Chrome中的所有JavaScript代码,并通过WebSocket与本机代码进行通信。那么你 正在使用V8。
虽然两个环境非常相似,但最终可能会遇到一些 不一致。我们可能会尝试其他JS 未来的发动机,所以最好不要依赖于细节 任何运行时。
因此,正如评论中所提到的,最好使用momentJS
而不是盲目地依赖于环境的JS,这会导致docs
答案 1 :(得分:0)
在我开始使用以下代码之前,我遇到了同样的问题:
moment(`${post.date}+02:00`).
这里我使用了+02:00
,因为服务器日期是GMT + 2时区。您应该更改它以调整服务器日期时区