<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)
是什么原因导致的,我该如何解决
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,这是一个为Safari。在iOS上,JSC不使用JIT,因为缺少可写iOS应用程序中的可执行内存
- 当使用Chrome调试时,它在Chrome内部运行所有JavaScript代码,并通过WebSocket与本地代码通信。所以你正在使用V8
虽然两种环境非常相似,但您最终可能会遇到一些不一致。我们可能会尝试使用其他JS发动机,因此最好避免依赖任何运行时。
因此,如评论中所述,最好使用momentJS
,而不是盲目依赖环境的JS,因为这可能会导致文档中所述的不一致
在开始使用以下代码之前,我一直面临着同样的问题:
moment(`${post.date}+02:00`).
这里我使用了+02:00
,因为服务器日期在GMT+2时区。你应该更改它来调整你的服务器日期时区