Найдите следующий месяц заданной даты в javascript

У меня есть фрагмент кода, чтобы найти следующий месяц указанной даты.

var d = new Date('2018-03-31');
dt = new Date(d.setMonth(d.getMonth() + 1));
document.getElementById("demo").innerHTML = dt;

Но мне интересно, что здесь не так, поскольку он добавляет один месяц к March и дает May вместо April?

ДЕМО:

var d = new Date('2018-03-31');

dt = new Date(d.setMonth(d.getMonth() + 1));
document.getElementById("demo").innerHTML = dt;
<p id = "demo"></p>

31 апреля нет :)

Thum Choon Tat 27.03.2018 09:17

Но это month = month +1 правильно?

mpsbhat 27.03.2018 09:18

Да, но 31st April не существует, поэтому он переходит на 1st May

Thum Choon Tat 27.03.2018 09:19

Он добавляет месяц к дате, а не только к месяцу. Итак, у вас 31 апреля, которое фактически становится 1 мая.

Lelio Faieta 27.03.2018 09:20
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
4
3 854
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

setMonth изменяет исходный объект Date - попробуйте просто setMonth, а затем снова сослаться на объект даты, а не создавать новый:

var d = new Date('2018-03-31');
d.setMonth(d.getMonth() + 1);
document.getElementById("demo").innerHTML = d;
<p id = "demo"></p>

Это еще май ...

Andreas 27.03.2018 09:20

Э-э, показывает апр для меня. Думаю, это проблема с часовым поясом

CertainPerformance 27.03.2018 09:20

В апреле всего 30 дней. Если вы добавите 1 к месяцу 31 марта, вы будете на 1 месяц позже, то есть 1 мая.

31st April нет, поэтому он идет на 1st May. Можете попробовать с 2018-03-30

var d = new Date('2018-03-30');

dt = new Date(d.setMonth(d.getMonth() + 1));
document.getElementById("demo").innerHTML = dt;
<p id = "demo"></p>
d = new Date("2018-01-30") ... - А если ТО не может изменить строку?
Andreas 27.03.2018 09:23

Тогда как получить April?

mpsbhat 27.03.2018 09:24

@mpsbhat Проверить дубликат

Andreas 27.03.2018 09:25

А также проверьте ответ Йогена

Thum Choon Tat 27.03.2018 09:32

Спасибо @ThumChoonTat .. !!! Разобрался с ошибкой .. !!

mpsbhat 27.03.2018 11:28
Ответ принят как подходящий

Использовать

setMonth(month, day)

d.setMonth(d.getMonth() + 1, 1);, где день как 1st день месяца следующий

Только если вас интересует деталь Месяц

var d = new Date('2018-03-31');

d.setMonth(d.getMonth() + 1, 1);

dt = new Date(d);
document.getElementById("demo").innerHTML = dt;
<p id = "demo"></p>

Другие вопросы по теме