Как добавить следующую дату подписки, если месяц январь с 29,30,31, чтобы избежать такой же даты в феврале в javascript?

Я хочу установить month и date следующего месяца с даты подписки.

Пример: Если сегодня 30th January, тогда следующая дата подписки должна измениться на 30 days after 30th Jan. Если месяц не високосный, то он должен быть установлен на 2nd March вместо 30th Feb.

Наряду с этим также, когда месяц December, месяц должен быть установлен на январь.

Это код, который я решил использовать для решения моей Dec to Jan проблемы, но я все еще не уверен насчет этого February.

var now = new Date();
if (now.getMonth() == 11) {
    var current = new Date(now.getFullYear() + 1, 0, now.getDate());
} else {
    var current = new Date(now.getFullYear(), now.getMonth() + 1, now.getDate());
}

person Biku7    schedule 14.01.2021    source источник
comment
То, что вы описываете, не происходит. Вы можете добавить 1 месяц или добавить фиксированные 30 дней, результаты аналогичны. 31 января + 1 месяц дает 2 или 3 марта в зависимости от того, високосный год это или нет. 31 января + 30 дней дает 1 или 2 марта (в зависимости от високосного года).   -  person RobG    schedule 14.01.2021


Ответы (1)


добавление 30 дней к текущей дате автоматически приведет к получению следующей фактической даты через 30 дней

объект Date рассчитает следующую дату независимо от количества дней в месяце

let someDate = new Date();
let numberOfDays = 30;

someDate.setDate(someDate.getDate() + numberOfDays); 
let dateFormated = someDate.toISOString().substr(0,10);
console.log(dateFormated);

someDate = new Date('2020-09-10');
someDate.setDate(someDate.getDate() + numberOfDays); 
dateFormated = someDate.toISOString().substr(0,10);
console.log(dateFormated);

person Ahmed Gaafer    schedule 14.01.2021
comment
Но это тогда, когда в предыдущем месяце будет 30 дней. А если 31 день и так далее? - person Biku7; 14.01.2021
comment
Я добавил новый пример - person Ahmed Gaafer; 14.01.2021
comment
так добавление даты автоматически устанавливает месяц? Значит, мне не нужно устанавливатьMonth извне после этого? @ Ахмед - person Biku7; 14.01.2021
comment
да, вам нужно только добавить дни - person Ahmed Gaafer; 14.01.2021
comment
в порядке. А также, если месяц декабрь, он все равно будет устанавливать месяц и дату соответственно с января? - person Biku7; 14.01.2021
comment
да, а также измените год на следующий год - person Ahmed Gaafer; 14.01.2021
comment
Можете ли вы добавить последний пример, указав дату: 1) 30 января 2021 года 2) 31 декабря 2020 года, а затем дайте мне знать результат, пожалуйста !!! - person Biku7; 14.01.2021