Как я могу отформатировать данную дату только день и месяц с моментом? - PullRequest
2 голосов
/ 20 марта 2020

Я получаю на объекте что-то вроде этого 3/19, и мне нужно знать, как я могу сделать читаемым моментально, потому что я должен сравнить эту дату с текущей датой, которую я также получаю с момента.

export const themes: Theme[] = [{
  theme: 'spring',
  bannerImage: 'spring.jpg',
  cssOverride: 'springThemeStyles.scss',
  endDate: '6/19',
  startDate: '3/19'
}];

export const getActiveTheme = (): any => {
  const now = moment().format('MM/DD');

  return themes.map((t: Theme) => {
    if (t.startDate >= now || t.endDate <= now) {
      if (t.theme.toLowerCase() === 'spring') {
        return require('../../../styles/spring.theme.scss');
      }

      return null;
    }
  });
};

Прямо сейчас это проверка не работает: (t.startDate >= now || t.endDate <= now)

Но если я сделаю что-то вроде этого: moment(t.endDate) это говорит о недопустимых данных.

Есть мысли?

1 Ответ

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

Главное, что вам не хватает, это то, что вам нужно сообщить Моменту, в каком формате вводится, используя синтаксис string + format .

Вам также следует использовать встроенный Момент . js методы сравнения дат.

export const themes: Theme[] = [{
  theme: 'spring',
  bannerImage: 'spring.jpg',
  cssOverride: 'springThemeStyles.scss',
  endDate: '6/19',
  startDate: '3/19'
}];

export const getActiveTheme = (): any => {
  const now = moment();
  const format = 'MM/DD';

  return themes.map((t: Theme) => {
    if (moment(t.startDate, format).isSameOrAfter(now) 
        || moment(t.endDate, format).isSameOrBefore(now)) {
      if (t.theme.toLowerCase() === 'spring') {
        return require('../../../styles/spring.theme.scss');
      }

      return null;
    }
  });
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...