Лучший способ проверить дату - до / после 1-2 дней до сегодняшней даты, используя момент - PullRequest
0 голосов
/ 27 февраля 2020

Если дата наступает через 1 или 2 дня, используйте красный и зеленый цвета в течение следующих 1-2 дней после даты, в противном случае - черный. Есть ли лучший способ сделать это

const date = moment(apptDate).isValid() ? moment(apptDate) : '';
const dateMinus1days = date !== '' ? date.subtract(1, 'day').format('MM/DD/YYYY') : null;
const dateMinus2days = date !== '' ? date.subtract(2, 'day').format('MM/DD/YYYY') : null;
const dateAdd1days = date !== '' ? date.add(1, 'day').format('MM/DD/YYYY') : null;
const dateAdd2days = date !== '' ? date.add(2, 'day').format('MM/DD/YYYY') : null;
let color;
if (dateMinus1days && moment().format('MM/DD/YYYY') === dateMinus1days || dateMinus2days && moment().format('MM/DD/YYYY') === dateMinus2days) {
    color = 'green'
} else if (dateAdd1days && moment().format('MM/DD/YYYY') === dateAdd1days || dateAdd2days && moment().format('MM/DD/YYYY') === dateAdd2days) {
    color = 'red'
} else {
    color = 'black'
}

1 Ответ

2 голосов
/ 27 февраля 2020

Вы можете использовать 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>
...