2013-09-04 2 views
48

Я использую datepicker, который дает дату в формате Sun Jul 7 00:00:00 EDT 2013. Даже если месяц говорит в июле, если я делаю getMonth, это дает мне предыдущий месяц.getMonth в javascript дает последний месяц

var d1 = new Date("Sun Jul 7 00:00:00 EDT 2013"); 
d1.getMonth());//gives 6 instead of 7 

Что я делаю неправильно?

+7

Да ... это [нулевая индексация] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/getMonth). – Emissary

+1

6 is 0 июля –

+2

Не теряйте рассудок с датами в javascript. Используйте Moment.js, если вы можете –

ответ

93

Потому что getmonth() начать с 0. Возможно, вы захотите иметь d1.getMonth() + 1 для достижения того, чего хотите.

+48

Я должен сказать, что индексировать месяц с нулевым индексом - самая тупая вещь, которую я видел через некоторое время. ' – LarryBud

+1

почему бы кому-то это понадобилось 0, если getDate дает 1-31? –

+2

Скорее всего вам придется делать 'd1.getMonth() <12? d1.getMonth() + 1: 1' - иначе в декабре было бы 13, а не? – DanielKhan

8

getMonth() Функция основана на нулевом индексе. Вы должны сделать d1.getMonth() + 1

Недавно я использовал Moment.js библиотеки и никогда не оглядывался назад. Попробуй!

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