Момент js isAfter всегда возвращает false - PullRequest
0 голосов
/ 04 августа 2020
const endTime = moment.utc(end, 'HH:mm:ss').local().format('HH:mm:ss');
const startTime = moment.utc(start, 'HH:mm:ss').local().format('HH:mm:ss');
valid = moment(endTime).isAfter(startTime, 'hour');

Таким образом, даже если время окончания - 7 утра, а время начала - 6 утра, оно все равно возвращает false

Ответы [ 3 ]

1 голос
/ 04 августа 2020

Если вам просто нужно сравнить час, просто извлеките час начального времени и проверьте, < это ли час конечного времени:

const start = moment(new Date('2020-08-04T08:59:59.293Z'));
const end = moment(new Date('2020-08-04T10:59:59.293Z'));
 
const endTime = parseInt(moment.utc(end, 'HH:mm:ss').local().format('HH'));
const startTime = parseInt(moment.utc(start, 'HH:mm:ss').local().format('HH'));
const valid = startTime < endTime;

console.log(valid);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js"></script>

В противном случае не связывайтесь с форматированием, у вас уже есть дата начала и окончания:

const start = moment(new Date('2020-08-04T08:59:59.293Z'));
const end = moment(new Date('2020-08-04T10:59:59.293Z'));
 
const valid = start.add(1, 'hour').isBefore(end);

console.log(valid);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js"></script>
0 голосов
/ 04 августа 2020

Зачем вообще использовать момент?

const start = new Date();
const end = new Date();
end.setHours(end.getHours() + 1);
const startTime = start.getHours();
const endTime = end.getHours();
console.log(startTime, endTime, endTime < startTime )

Или, если вы не хотите проверять только часы, используйте end.getTime() < start.getTime()

0 голосов
/ 04 августа 2020

Если у вас есть эти строки:

const endTime = moment.utc(end, 'HH:mm:ss').local().format('HH:mm:ss'); // 17:00:00
const startTime = moment.utc(start, 'HH:mm:ss').local().format('HH:mm:ss'); // 16:00:00

Вы можете просто сравнить их, не используя момент. Сравнение строк должно быть нормальным;

return endTime > startTime
...