Момент, дающий неверный результат при сравнении дат - PullRequest
0 голосов
/ 20 марта 2020

Я пытаюсь сравнить 2 даты и получаю сообщение об ошибке.

Это мои функции:

const validateDate = (date: string): Moment => {
  return moment(`${moment().year()}/${date}`);
};

export const themes: Theme[] = [{
  siteCode: '',
  costCenter: '',
  theme: 'spring',
  bannerImage: 'spring.jpg',
  cssOverride: 'springThemeStyles.scss',
  endDate: moment(validateDate('6/19')).toDate(),
  startDate: moment(validateDate('3/20')).toDate()
}];

export const getActiveTheme = (): any => {
  const now = moment().toDate();

  console.log(now); // Thu Mar 19 2020 21:56:10 GMT-0600 (Central Standard Time)
  console.log(themes[0].startDate); // Fri Mar 20 2020 00:00:00 GMT-0600 (Central Standard Time)
  console.log(themes[0].startDate >= now); // true

  return themes.map((t: Theme) => {
    if (t.startDate >= now) { // this is always true I don't know why
      if (t.theme.toLowerCase() === 'spring') {
        return require('../../../styles/spring.theme.scss');
      }

      return null;
    }
  });
};

Я не понимаю, почему условие if (t.startDate >= now) {...} всегда true.

Есть мысли?

1 Ответ

0 голосов
/ 20 марта 2020

Это просто потому, что startDate на Пт 20 марта 2020 и сейчас на Чт 19 марта 2020 , поэтому ясно, что startDate> = now должно быть истинным

Поскольку вы установили startDate на 20-е, startDate> = now будет ложным когда сейчас будет 21-го

...