我在iOS中计算日期时得到NaN
。对于台式机和Android,它可以完美运行,但是在iOS和Safari上,我得到NaN
这是我的代码:
last_visit_date
来自数据库,例如:"2019-06-07T00:00:00.000Z"
let formattedLastVisitDate = moment(last_visit_date).format('MM-DD-YYYY') --- RESULT: "06-06-2019"
let testing = moment(formattedLastVisitDate).add('30', 'days').format('MM-DD-YYYY') -- RESULT "Invalid Date"
let add14Days = moment(testing).add('14', 'days').format('MM-DD-YYYY') -- RESULT "Invalid Date"
为什么这种逻辑仅在iOS上失败?
答案 0 :(得分:3)
在moment(formattedLastVisitDate)
和moment(testing)
中,您都在解析MM-DD-YYYY
格式的字符串。如果在开发人员控制台上查看,将会看到不赞成使用的警告。 Moment.js指南here中对此进行了介绍。
解析字符串时,要么解析supported string formats之一,要么提供formatting specification第二个参数,就像这样:
moment(formattedLastVisitDate, 'MM-DD-YYYY')
由于弃用消息中所述的原因,它在某些浏览器上而不是其他浏览器上失败,这是因为它退回到内置的Date.parse
行为,该行为具有某些特定于实现的行为,因此在浏览器。