Вопрос по javascript – Создание даты с номерами (новая Дата (2012, 03,…) дает неправильный месяц (+1)

10

При созданииnew Date объект, использующий числа для частей, значение, которое я получаю, точноone month перед тем значением, которое я указал за «месяц».

new Date(2012, 05, 17, 00, 00, 00)
Sun Jun 17 2012 00:00:00 GMT+0800 (HKT)  // june?!

Тем не менее, обычный анализ точно такой же строки возвращает правильное время:

new Date("2012-05-17 00:00:00")
Thu May 17 2012 00:00:00 GMT+0800 (HKT)

Я получаю тот же результат в ie / ff / chrome. Удаление часов / минут / секунд не имеет никакого эффекта. Я могу обойти это, вычтя один перед установкой месяца, но вместо этого я просто переписал свою дату в виде строки.

Edit: The string parse doesn't work in IE. I have no idea what I did, but I swear I made that work. Thats prob. why I avoided it in the first place. I've switched to using moment.js for now.

Ах, теперь я понял. Точно так же, как обычные даты в Java, которые я не кодирую, за исключением редких случаев, и даже тогда всегда с библиотекой (joda и т. Д.). Какая ужасная идея в любом случае. Вот скиты на вопрос:Почему январь месяц 0 в календаре Java?

Почему это происходит?

Ах, я никогда не пробовал 09, понятия не имею. Я не делаю много JS. Andrew Backer
Спасибо @corbin. Я понял это, но не включил его в примеры. Наш стандартный способ форматирования, исходящий из .net - это MM, так что он ускользнул. К счастью для меня это не было 09 :) Andrew Backer
Фактически, поскольку 09 не является действительным восьмеричным, я полагаю, что 09 === 9 (в основном в качестве "опа"). На самом деле 0 безвреден, если только вы не попытаетесь сделать 011 или 012. На самом деле это не означало читать как исправление, а скорее просто примечание :) Corbin
Стоит отметить, что 05 на самом деле является восьмеричным числом. К счастью, восьмеричное 5 == десятичное 5. Corbin
Кроме того, просто ради ссылки на что-то официальное:developer.mozilla.org/en/JavaScript/Reference/Global_Objects/…, Месяц: & quot; Целочисленное значение, представляющее месяц, начиная с 0 для января до 11 для декабря. & Quot; Corbin

Ваш Ответ

1   ответ
16

месяцы представлены 0 (январь) -11 (декабрь).

Причины, по которым дни не следуют этому правилу, заключаются в том, чтобы не путать авторов с разницей в 30/31 месяца.

От MDN:

month

Integer value representing the month, beginning with 0 for January to 11 for December.

Error: User Rate Limit Exceeded
Error: User Rate Limit Exceeded Andrew Backer
Error: User Rate Limit ExceededearthError: User Rate Limit ExceededlessError: User Rate Limit ExceededpeopleError: User Rate Limit Exceededstupid. Andrew Backer

Похожие вопросы