繁体   English   中英

使用moment.js的“无效日期”解析日期

[英]“Invalid date” parsing date with moment.js

我正在尝试从给定的日期计算相对日期,如下所示

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

我认为给定日期遵循以下模式:

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();   

但是我收到一个“无效日期” ...

我已按照一些建议将“ ddd”的“ EEE”更改为“ ddd”,但是相对日期却不好。

moment(“ 2016年11月21日星期一12:30:40”,“ ddd MMM d HH:mm:ss zzz yyyy”)。fromNow() > 20天前

关于我在做什么错的任何想法吗?

非常感谢!

假设除了Moment之外,您还使用了矩时区 ,那么还有一些问题:

  1. zzz 无效,未记录; 只是z (不过,似乎允许这样做。)
  2. EEE无效。 E是天数。 您想要ddd (日期名称)。 请参阅文档
  3. 您还想在DDD (月号)中使用d (日期名称)。 同样,请参阅上面链接的文档。

这适用于moment + moment-timezone:

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> 

但是 ,我不认为Moment支持解析z ,因为在Moment时区文档中找不到任何内容可以说它增强了解析,并且当我运行上述代码时,它的作用就好像日期/时间在我的时区中( 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> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM