Возможно, вы установите дату до 31 февраля 2009 года (если сегодня 31 января), а Javascript автоматически перевернет это в начале марта.
Проверьте день месяца, я ожидаю, что это будет 1, 2 или 3. Если это не то же самое, что до того, как вы добавили месяц, откат назад на один день до тех пор, пока месяц не изменится.
Таким образом, день «последний день января» становится «последним днем февраля».
EDIT:
Ronald, на основе ваших комментариев к другим ответам, вы можете захотеть, чтобы держаться подальше от края случае поведение таких, как «то, что происходит, когда я пытаюсь сделать февраля 30» или «то, что происходит, когда я попробуйте сделать 2009/13/07 (гггг/мм/дд) »(последняя может быть проблемой даже для моего решения, поэтому вы должны ее протестировать).
Вместо этого я хотел бы явно указать возможности. Так как вы не заботитесь о дне месяца (вы просто хотите год и месяц, чтобы быть правильным в течение следующего месяца), что-то вроде этого должно хватить:
var now = new Date();
if (now.getMonth() == 11) {
var current = new Date(now.getFullYear() + 1, 0, 1);
} else {
var current = new Date(now.getFullYear(), now.getMonth() + 1, 1);
}
Это дает вам 1 янв в следующем году в любой день в декабре и в первый день следующего месяца в любой другой день. Больше кода, я знаю, но я давно устал от кодовых трюков за эффективность, предпочитая читаемость, если нет четкого требования делать иначе.
вчера был 1 февраля ... – nickf
смешно, вопрос был спросил 1 февраля в 00:03, время, которое он закончил со своим вопросом, было уже «датировано»: P –