Как проверить, что две даты находятся на расстоянии более 7 дней, используя moment.js - PullRequest
2 голосов
/ 25 июня 2019

Я пытаюсь определить, существует ли более 7 дней между двумя датами, используя moment.js.

код:

var start = moment(self.StartDate(), "DD/MM/YYYY");
var end = moment(self.EndDate(), "DD/MM/YYYY");

console.log(start);
console.log(end);
console.log(moment.duration(end.diff(start)).asDays());

if (moment.duration(end.diff(start)).asDays() > 7) {
    alertify.alert("Error", "Only a maximum of 7 days can be investigated.");
    return;
}

Это работает, если две даты находятся в пределахтот же месяцОднако, если даты пересекаются между 2 месяцами, duration возвращает отрицательное значение.

Пример результатов:

enter image description here

Ответы [ 5 ]

4 голосов
/ 25 июня 2019

Используйте метод diff, чтобы проверить разницу между двумя днями, и добавьте days в качестве второго параметра, чтобы получить разницу в днях.

var d1 = "2019-01-10";
var d2 = "2019-01-20";
var diff = moment(d2).diff(d1, 'days')
alert('difference :' + diff)

alert('is difference more than 7: ' + (diff > 7))
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
1 голос
/ 25 июня 2019

Вы можете сделать:

const d1 = moment([2019, 6, 30]);
const d2 = moment([2019, 6, 1]);
const diffDays = d1.diff(d2, 'days');

console.log(diffDays);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>
0 голосов
/ 25 июня 2019

С собственным JavaScript:

const dayInMiliseconds = 1000 * 60 * 60 * 24;
const self = {start: new Date(), end: new Date(new Date().setDate(new Date().getDate() + 7))}

console.log(Math.round((self.end - self.start) / dayInMiliseconds))
0 голосов
/ 25 июня 2019

https://momentjs.com/docs/#/displaying/difference/

var a = moment([2007, 0, 29]);
var b = moment([2007, 0, 28]);
a.diff(b) // 86400000
0 голосов
/ 25 июня 2019

попробуйте

end.diff(start, "days") > 7

документы: https://momentjs.com/docs/#/displaying/difference/

...