При создании объекта new Date
с использованием чисел для частей значение, которое я возвращаю, в точности один месяц превышает значение, которое я вложил в "месяц".
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: Разбор строк не работает в IE. Я понятия не имею, что я сделал, но я клянусь, что сделал эту работу. Это вопрос. почему я избегал этого в первую очередь. Я переключился на использование moment.js на данный момент.
А, теперь я понял. Точно так же, как обычные даты java, которые я не кодирую, кроме редко, и даже тогда всегда с библиотекой (joda и т.д.). Какая ужасная идея в любом случае. Вот, например, skeets задают вопрос: Почему январь месяц 0 в Java-календаре?
Почему это происходит?