"日期无效"用moment.js解析日期

时间:2016-11-21 11:20:15

标签: javascript date parsing momentjs

我试图计算一个给定的相对日期,如下所示

11月21日星期一11:48:33 CET 2016

我认为给定的日期遵循这种模式:

EEE MMM d HH:mm:ss zzz yyyy

所以,我试图用这一行得到相对日期:

moment("Mon Nov 21 11:48:33 CET 2016", "EEE MMM d HH:mm:ss zzz yyyy").fromNow();   

但是我收到了"无效的日期" ...

我已经改变了EEE"为" ddd"遵循一些建议,但后来我的相对日期不好。

时刻(" 11月21日星期一12:30:40 CET 2016"," ddd MMM d HH:mm:ss zzz yyyy")。fromNow()> 20天前

对我做错了什么的想法?

非常感谢你!

2 个答案:

答案 0 :(得分:2)

假设除了Moment之外你还在使用moment-timezone,还有一些问题:

  1. zzz 无效未记录;它只是z。 (但似乎允许这样做。)
  2. EEE无效。 E代表日期数字。你想要ddd(日名)。见the documentation
  3. 您还在dD(月份日期编号)中使用了DD(日期名称)。再次,请参阅上面链接的文档。
  4. 这适用于时刻+时刻 - 时区:

    moment("Mon Nov 21 11:48:33 CET 2016", "ddd MMM D HH:mm:ss z yyyy").fromNow();
    // -------------------------------------^^^-----^----------^
    

    示例:

    
    
    console.log(moment("Mon Nov 21 11:48:33 CET 2016", "ddd MMM D HH:mm:ss z yyyy").fromNow());
    
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.16.0/moment.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/moment-timezone/0.5.9/moment-timezone-with-data-2010-2020.min.js"></script>
    &#13;
    &#13;
    &#13;

    但是,我不认为Moment支持解析z,因为我无法在Moment Timezone文档中找到任何内容来说明它会增强解析功能,以及何时我运行上面的操作,就好像日期/时间在我的时区(GMT),而不是CET;事实上,我可以交换我想要的任何时区指标(EST,PST等),它仍然将字符串视为我当地的时间。

答案 1 :(得分:0)

对于星期几,请使用ddd

检查http://momentjs.com/docs/以获取有关格式的更多信息。

&#13;
&#13;
console.log(moment("Mon Nov 21 11:48:33 CET 2016", "ddd MMM d HH:mm:ss zzz yyyy").fromNow());  
&#13;
 <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.16.0/moment.min.js"></script>
&#13;
&#13;
&#13;