【问题标题】:"Invalid date" parsing date with moment.js“无效日期”用 moment.js 解析日期
【发布时间】:2017-04-04 18:33:48
【问题描述】:

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

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”更改为“EEE”,但我得到了一个错误的相对日期。

moment("Mon Nov 21 12:30:40 CET 2016", "ddd MMM d HH:mm:ss zzz yyyy").fromNow() > 20 天前

知道我做错了什么吗?

非常感谢!

【问题讨论】:

  • 你包括moment-timezone吗?如果不是,则 z 格式说明符无效。 (我不是 100% 确定 zzz 对解析有效,即使你是......)
  • 另外,EEE 应该是 ddd
  • 是的,只要添加 ddd 而不是 EEE 就可以了
  • 是的,包括时刻时区(0.5.9版本)...
  • 如果我添加“ddd”而不是“EEE”,我会得到一个糟糕的相对日期...... moment("Mon Nov 21 12:30:40 CET 2016", "ddd MMM d HH:mm:ss zzz yyyy").fromNow() 我得到 20 天前

标签: javascript date parsing momentjs


【解决方案1】:

假设你使用moment-timezone除了Moment,还有几个问题:

  1. zzzinvalid 未记录的;只是z。 (不过,这似乎是允许的。)
  2. EEE 无效。 E 用于日期编号。你想要ddd(日期名称)。见the documentation
  3. 您还使用了d(日期名称),其中您想要DDD(月份编号)。同样,请参阅上面链接的文档。

这适用于时刻+时刻-时区:

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 Timezone 文档中找不到任何内容说它可以增强解析,并且当我运行上述内容时,它好像日期/时间在我的时区 (GMT) 中,而不是 CET;事实上,我可以交换任何我想要的时区指示符(EST、PST 等),它仍然将字符串视为我的本地时间。

【讨论】:

    【解决方案2】:

    对于星期几使用 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());  
     &lt;script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.16.0/moment.min.js"&gt;&lt;/script&gt;

    【讨论】:

      猜你喜欢
      • 2014-02-27
      • 1970-01-01
      • 1970-01-01
      • 2019-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多