我正在开发一个 react native 应用程序,我正在尝试使用 moment 格式化日期。
日期看起来像“02-16-2016 09:04:23”
function formatTime(date){
var formattedDate = moment(date).format('MM:ss A');
return formattedDate;
}
如果 chrome 调试器处于事件状态,则工作正常。但如果我禁用它,我得到的只是“无效日期”
与我正在使用的解码函数相同
var that = this;
MessagesService.getMessageBody(selectedMessage)
.then(function(messageBody){
var decodedData = window.atob(messageBody.messages);
that.setState({
messageBody: decodedData
})
})
.catch(function(err){
console.log(err);
})
显示解码后的数据
<Text> Body: {this.state.messageBody} </Text>
并显示日期
<View style = {[MessageStyles.senderItem, MessageStyles.date]}>
<Text>
{this.formatTime(message.createDateTime)}
</Text>
</View>
也许这是在 native react 中执行此操作的糟糕方法?仍在学习,所以我可能会做一些不好的练习。
最佳答案
我最近了解到,当使用chrome调试器时,react native使用不同的JS引擎。调试时使用chrome JS引擎,否则使用JavaScriptCore。根据这篇文章
http://ruoyusun.com/2015/11/01/things-i-wish-i-were-told-about-react-native.html
但是对于日期的实际问题,JavaScriptCore 引擎似乎不喜欢用 - 解析日期。我必须使用正则表达式将 - 替换为/,然后我所有的日期操作都工作正常。
02-16-2016 09:04:23 被视为无效
02/16/2016 09:04:23 被视为有效
关于node.js - 某些代码仅在 chrome 调试器处于事件状态时有效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35660278/