Angular 2 - 比较数组过滤器中的日期

问题描述 投票:0回答:2

这将在几秒钟内获得当前时间:

let currentTimeInSeconds = new Date().getTime() / 1000;

我有一个对象expirationDate的数组,它在几秒钟内返回该信息。我可以得到过期的账单,但是,我想过滤掉今天到期的账单。

this.ExpiringTodayBills = this.UnpaidDuebills.filter(bills => bills.paid === false && bills.expirationDate = currentTimeInSeconds);

上述代码不起作用,因为当前时间由于小时,分钟,秒和毫秒而不断变化。

如果expirationDate =今天,无论何时,我如何比较?

编辑:这是一个账单的例子

名称:测试账单

付出:虚假

expirationDate:1535598000(意思是2018年8月30日凌晨3:00:00)

金额:231.33

javascript angular typescript
2个回答
2
投票

这个怎么样?

isExpiringToday(expirationDate) {
  const start = new Date();
  start.setHours(0, 0, 0, 0);

  const end = new Date();
  end.setHours(23, 59, 59, 999);

  const expiryDateTimeStamp = expirationDate * 1000;

  return (expiryDateTimeStamp > start && expiryDateTimeStamp < end);
}

this.ExpiringTodayBills = this.UnpaidDuebills
  .filter(bills => !bills.paid && this.isExpiringToday(bills.expirationDate));

您可以通过打开浏览器开发工具,进入控制台并执行以下操作来测试:

function isToday(expiryDateTimeStamp) {
    const start = new Date();
    start.setHours(0, 0, 0, 0);

    const end = new Date();
    end.setHours(23, 59, 59, 999);

    return (expiryDateTimeStamp > start && expiryDateTimeStamp < end);
}

var newDate = new Date();
isToday(newDate.getTime())  // true

0
投票

你应该遍历你的数据并将你的expirationDatecurrentTimeInSeconds转换为date。图书馆moment.js可能会有所帮助。接下来,您可以:

this.ExpiringTodayBills = this.UnpaidDuebills.filter(bills => bills.paid === false && bills.expirationDate = today);

const today = moment().format('MM/DD/YYYY');
console.log(today);
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.8.4/moment.min.js"></script>
© www.soinside.com 2019 - 2024. All rights reserved.