“无效的日期”解析日期moment.js
问题描述:
我试图从给定一个类似如下“无效的日期”解析日期moment.js
周一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天前
任何想法关于我做错了什么?
非常感谢!
答
假设你除了此刻正在使用moment-timezone,有几个问题:
-
zzz
是无效无证;它只是z
。 (虽然这似乎被允许。) -
EEE
无效。E
用于天数。你想要ddd
(日期名称)。请参阅the documentation。 - 您还在或
DD
(月份中的某天)使用了d
(日期名称)。再次看到上面链接的文档。
这适用于瞬间+时刻,时区:
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>
然而,我不觉得瞬间支持对其进行解析时z
,因为我可以在Moment Timezone文档中找不到任何东西来说明它增强了解析,并且当我运行上述内容时,它的行为就好像日期/时间在我的时区(GMT)中,而不是CET;事实上,我可以交换任何时区指示符(EST,PST等),它仍然将字符串当作我的本地时间。
答
对于一周的使用日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());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.16.0/moment.min.js"></script>
你包括[时刻,时区(http://momentjs.com/timezone/)?如果不是,那'z'格式说明符是无效的。 (我不是100%确定'即使你是...... zzz'也可以解析...) –
另外,'EEE'应该是'ddd'。 –
是刚刚加入ddd而不是EEE会使它正确 –