2016-11-21 3 views
-1

Я пытаюсь вычислить относительную дату из данного, как следующий«Неверная дата» Дата синтаксический с moment.js

Пн ноя 21 11:48:33 CET 2016

I думаю, что данная дата следует этой схеме:

EEE MMM d HH: мм: сс ZZZ гггг

Итак, я пытаюсь получить относительную дату этой линии:

moment("Mon Nov 21 11:48:33 CET 2016", "EEE MMM d HH:mm:ss zzz yyyy").fromNow(); 

Но Я получаю «Invalid дата» ...

Я изменил «EEE» для «ДДД» после несколько советов, но затем я получаю плохую относительную дату.

момент ("ПН 21 ноября 12:30:40 CET 2016", "ДДД MMM d HH: мм: сс ZZZ гггг"). 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. Вы также использовали d (день), где захотели D или DD (номер месяца). Опять же, см. Документы, указанные выше.

Это работает с момента + момент- часовой пояс:

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

В день использования недели ддд

Проверить 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>

Смежные вопросы