Вы можете использовать isBetween
, что:
Проверьте, находится ли момент между двумя другими моментами, опционально с учетом шкалы единиц измерения (минуты, часы, дни и т. Д.) 1017 *). Матч эксклюзивный. Первые два аргумента будут проанализированы как моменты, если это не так.
Ваш код может выглядеть следующим образом:
const getColor = (apptDate) => {
let color = 'black';
const date = moment(apptDate);
const now = moment();
const inTwoDays = moment().add(2, 'day');
const twoDaysAgo = moment().subtract(2, 'day')
if (date.isValid() && date.isBetween(twoDaysAgo, now, 'day', '[]')) {
color = 'green';
} else if (date.isValid() && date.isBetween(now, inTwoDays, 'day', '[]')) {
color = 'red';
}
return color;
}
[
moment().format(),
moment().add(1, 'day').format(),
moment().add(2, 'day').format(),
moment().add(3, 'day').format(),
moment().subtract(1, 'day').format(),
moment().subtract(2, 'day').format(),
moment().subtract(3, 'day').format(),
'invalid'
].forEach((elem) => {
console.log(elem, getColor(elem));
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.24.0/moment.min.js"></script>