В Momentjs, как анализировать даты, отправленные с сервера, построенного на Java?

Я получаю даты с сервера в виде списка, например, [2017,8,24,9,0]. Когда я разбираю и локализую их в momentjs, все даты идут на месяц вперед: вместо August я получаю September. В случае [2017,8,31,9,0] я получаю invalid date. Я думаю, это потому, что September не 31 дней.

Мой вопрос: как разобрать такие даты, как [2017,8,24,9,0], [2017,8,29,20,0] и [2017,8,31,9,0], в формат D.MMM [kl.] H:mm?

Я понимаю, что JavaScript date - это zero-indexed, а дата java - нет. Я использовал метод momentjs subtract(), но [2017,8,31,9,0] по-прежнему invalid date.


person mahan    schedule 21.07.2017    source источник
comment
Месяцы в JavaScript отсчитываются от нуля; вам придется вычесть один.   -  person jonrsharpe    schedule 21.07.2017
comment
Java — это не JavaScript.   -  person Rob    schedule 21.07.2017
comment
Нет, я имею в виду буквально со второго числа в массиве. То есть, прежде чем вы отдадите его моменту.   -  person jonrsharpe    schedule 21.07.2017
comment
@jonrsharpe спасибо!   -  person mahan    schedule 21.07.2017
comment
В качестве альтернативы, если API находится под вашим контролем, отправьте сообщение в лучшем формате, например временную метку Unix или строку ISO 8601.   -  person jonrsharpe    schedule 21.07.2017


Ответы (1)


Это проблема javascript. Но это не ошибка. В датах js месяцы отсчитываются от нуля . Это 0 = январь, 1 = февраль и т. д. Чтобы решить эту проблему, вы можете вычесть месяц на 1.

var myServerDate = [2017,8,24,9,0];

myServerDate[1] = myServerDate[1] -1;

Затем вы можете продолжить процесс разбора.

person Community    schedule 21.07.2017