Разница в дате выдачи в момент - PullRequest
0 голосов
/ 06 декабря 2018

Я пытаюсь создать новую дату, используя 2 даты, которые у меня есть.В основном моя новая дата

Output:

 Date 1 = (presentdate +1 month , endDate+1 day, presentdate+1 year);


            //Example 1: 
            var presentDate = "11/12/2018";
            var endDate = "2/8/2018";
            var Dat1 = "12/9/2018"; //new date

           //Example 2 :
            var presentDate = "11/12/2018";
            var endDate = "5/25/2018";
            var Dat1 = "12/26/2018"; //new date

          //Example 3 :
            var presentDate = "1/5/2018";
            var endDate = "5/30/2018";
            var Date1 = "2/31/2018"; // invalid date
            //should've been 2/28/2018 since that is the last day of the month

         //Example 4:
            var presentDate = "3/5/2018";
            var endDate = "10/30/2018";
            var Date1 = "4/31/2018"; //Invalid date. Should've been 4/30/2019 since it's last day of the month

Мой код:

            var mPresent = moment(presentDt);
            var mEnd = moment(eDt);

            var Date1 = moment({
            year: mPresent.year(), // get presentDt's year
            month: mPresent.add(1, 'month').month(), // get presentDt's month
            date: mStart.date() // get startdt day of the month
        });

console.log(Date1);

Это не работает во всех случаях, потому что не каждый месяц имеет 30,31дней, а затем есть високосный год.Мне нужно создать действительную дату, потому что в некоторых из этих случаев она возвращает недопустимую дату.

Любая помощь приветствуется.Спасибо!

1 Ответ

0 голосов
/ 07 декабря 2018

Я не совсем уверен, что происходит с вашим кодом, но я отсекал большую его часть и в основном сделал 1-строчный для вычисления разницы # месяцев - похоже, работает.

document.querySelector("#ok").addEventListener("click", function () {
  var paymentDate = document.getElementById("presentDate").value;
  var etDate = document.getElementById("endDate").value;

  var RemainingPayments = moment(etDate).diff(moment(paymentDate), 'months');
  console.log(RemainingPayments);
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>
<label>Present date</label><input id="presentDate" name="presentDate"  type="date">
<label>End Date</label> <input id="endDate" name="endDate" type="date">
<button id='ok'>OK</button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...