MomentJS,动态当年

MomentJS, dynamic current year

我有这个代码:

const date = moment(person.indefiniteContractDate
  .toISOString()
  .substring(2),
  'YY-MM-DD');

if (date.isAfter('2020-08-15'))

我想询问当前年份,但总是询问“08-15”,我该怎么做?

moment 函数能够接受 Date。只需调用 moment(person.indefiniteContractDate)。如果需要将 hours/min/sec 设置为零,请在传入 Date 对象后执行此操作。有一个名为 startOf 的函数可以将当天的时间设置为零。

注意:时刻是EOL(生命终结),你应该使用Luxon代替。

// IF
{
  const person = { indefiniteContractDate: new Date() }
  // 
  const date = moment(person.indefiniteContractDate).startOf('day');

  if (date.isAfter('2020-08-15')) {
    console.log('AFTER!');
  }
}

// ELSE
{
  const person = { indefiniteContractDate: new Date(2020, 7, 13) }
  const date = moment(person.indefiniteContractDate).startOf('day');

  if (date.isAfter('2020-08-15')) {
    console.log('AFTER!');
  } else {
    console.log('BEFORE!'); // <-- Here
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment.min.js"></script>

你可以通过moment('08-15','MM-DD')

这将为您提供当年的 08-15

所以我认为你的代码可以是

const date = moment(person.indefiniteContractDate
  .toISOString()
  .substring(2),
  'YY-MM-DD');

const compareDate = moment('08-15','MM-DD');

if (date.isAfter(compareDate))