簡體   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