我试图计算一个给定的相对日期,如下所示
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天前
对我做错了什么的想法?
非常感谢你!
答案 0 :(得分:2)
假设除了Moment之外你还在使用moment-timezone,还有一些问题:
zzz
z
。 (但似乎允许这样做。)EEE
无效。 E
代表日期数字。你想要ddd
(日名)。见the documentation。d
或D
(月份日期编号)中使用了DD
(日期名称)。再次,请参阅上面链接的文档。这适用于时刻+时刻 - 时区:
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;
但是,我不认为Moment支持解析z
,因为我无法在Moment Timezone文档中找到任何内容来说明它会增强解析功能,以及何时我运行上面的操作,就好像日期/时间在我的时区(GMT),而不是CET;事实上,我可以交换我想要的任何时区指标(EST,PST等),它仍然将字符串视为我当地的时间。
答案 1 :(得分:0)
对于星期几,请使用ddd
检查http://momentjs.com/docs/以获取有关格式的更多信息。
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;