【问题标题】:Moment JS not recognising ISO 8601 dateMoment JS 无法识别 ISO 8601 日期
【发布时间】:2017-07-07 17:19:12
【问题描述】:

所以我有两个日期我想了解一下:

console.log(new Date(Date.now()).toISOString()); //2017-07-07T16:55:30.471Z
console.log(asset.past[i].date); //2017-07-06T20:29:00.670Z
var a = moment([new Date(Date.now()).toISOString()]);
console.log(a); //Moment Date:Sun Jan 01 2017 00:00:00 GMT+0000
var b = moment([asset.past[i].date]);
console.log(b); //Moment Date:Sun Jan 01 2017 00:00:00 GMT+0000
console.log(a.diff(b, 'seconds', true)); //0
console.log(a.diff(b, 'days', true)); //0
console.log(a.diff(b, 'months', true)); //0

之后我将控制台日志的输出作为 cmets。我认为它无法将日期格式识别为 ISO 8601,并且默认为 Sun Jan 01 2017 00:00:00 GMT+0000。无论哪种方式,知道如何解决它吗?

干杯,埃德。

【问题讨论】:

    标签: javascript node.js momentjs jsx iso8601


    【解决方案1】:

    为什么要将数组传递给时刻构造函数?您希望 a 实际上是什么,只是当前日期?如果是这样,请执行moment()。如果您想传入一个字符串,请按照您在第 1 行正确执行的操作。

    这只是我删除方括号的 2 个修复。同样,您只需执行moment() 即可获得指向现在的时刻。

    // var a = moment(new Date(Date.now()).toISOString());
    var a = moment();
    var b = moment(asset.past[i].date);
    

    【讨论】:

    • 我在文档中看到了这个:var a = moment([2007, 0, 29]); 并认为我应该把它放在一个数组中,我不是一个聪明人......谢谢伙计!
    • @EdLynch - 你可以这样做,如果你在一个数字数组中,每个数字代表一个时间段(第一个 = 年,第二个 = 月,第三个 = 天,等等)。
    • 哦,是的,我知道,它只是说我不能 3 分钟,所以我想我以后再做,现在让我这样做。
    • new Date() 和 Date.now() 不一样,一个返回一个对象,另一个返回一个数字。
    猜你喜欢
    • 1970-01-01
    • 2019-06-03
    • 1970-01-01
    • 2013-05-14
    • 2013-02-03
    • 2017-06-30
    • 1970-01-01
    • 2017-02-05
    相关资源
    最近更新 更多