2016-06-02 4 views
1

Этот код отлично работает на chrome, но не работает на firefox или IE. Обратите внимание, что она отлично работает, когда я удалить «+00: 00»moment.js issue on firefox

<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.11.0/moment.min.js"></script> 
<script> 
var now = moment("Sun Jun 01 2016 05:00:00+00:00").format('ddd MMM DD YYYY HH:mm:ssZ'); 
alert(now); 
</script> 

ответ

1

Если вы не сдадите формат строки для синтаксического анализа, вы полагаетесь на moment.js угадать формат и если он не может получить что-то похожее на действительную дату (он все равно может быть неверным), он будет отпадать от разбора с помощью встроенного конструктора Date, который настоятельно рекомендуется против. Формат предназначен для формата вывода, а не для формата разбора.

Чтобы передать формат строки в синтаксический анализатор moment.js, включить его в качестве второго аргумента:

moment("Sun Jun 01 2016 05:00:00+00:00",'ddd MMM DD YYYY HH:mm:ssZ').format(/*output format*/) 

Заметим также, что, когда он возвращается к встроенной в разборе, отображается следующее предупреждение в консоли:

Предупреждение об устаревании: момент строительства возвращается к js Date. Это обескураживает и будет удалено в предстоящем крупном выпуске. Пожалуйста, обратитесь к https://github.com/moment/moment/issues/1407 за дополнительной информацией.

+0

Спасибо, что работает. Я предположил, что формат предназначен для ввода, а не для вывода – alek

+0

Я предполагаю, что это одно из тех решений API: должны ли быть методы * parse * и * format * или принимать один и только один метод для другого? – RobG