2016-11-21 142 views
-1

我試圖從給定一個類似如下「無效的日期」解析日期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天前

任何想法關於我做錯了什麼?

非常感謝!

+0

你包括[時刻,時區(http://momentjs.com/timezone/)?如果不是,那'z'格式說明符是無效的。 (我不是100%確定'即使你是...... zzz'也可以解析...) –

+1

另外,'EEE'應該是'ddd'。 –

+0

是剛剛加入ddd而不是EEE會使它正確 –

回答

2

假設你除了此刻正在使用moment-timezone,有幾個問題:

  1. zzz無效無證;它只是z。 (雖然這似乎被允許。)
  2. EEE無效。 E用於天數。你想要ddd(日期名稱)。請參閱the documentation
  3. 您還在或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等),它仍然將字符串當作我的本地時間。

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());
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.16.0/moment.min.js"></script>