Вы, вероятно, обнаружите, что устанавливаете дату на 31 февраля 2009 г. (если сегодня 31 января), и Javascript автоматически переносит ее на начало марта.
Проверьте день месяца, я ожидаю, что он будет 1, 2 или 3. Если это не то же самое, что и до добавления вами месяца, откатитесь на один день, пока месяц снова не изменится.
Таким образом, день «последнего дня января» становится «последним днем февраля».
EDIT:
Рональд, основываясь на ваших комментариях к другим ответам, вы, возможно, захотите избежать такого крайнего поведения, как «что происходит, когда я пытаюсь сделать 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 января следующего года для любого дня декабря и первого дня следующего месяца для любого другого дня. Я знаю больше кода, но я уже давно устал от уловок кодирования для повышения эффективности, предпочитая удобочитаемость, если нет явного требования действовать иначе.