我需要知道日期是否等于或小于今天。
let currentTimeInSeconds = new Date().getTime() / 1000;
currentTimeInSeconds = currentTimeInSeconds.toString().substring(0, currentTimeInSeconds.toString().indexOf('.'));
this.UnpaidDuebills = this.UnpaidDuebills.filter(bills => bills.expirationDate <= currentTimeInSeconds);
bills.expirationDate
以字符串格式返回日期,例如22/01/2018
。
我不知道如何在几秒钟内在该数组过滤器中转换该字符串格式。
答案 0 :(得分:0)
您可以使用称为 UTC()的日期对象方法。 More details about the function
基本上,您只需要执行以下操作即可:
Date.UTC(year, month, day)
鉴于此,您的变量为bills.expirationDate,格式为dd / mm / yyyy,您需要将其拆分。
您可以这样做:
this.UnpaidDuebills = this.UnpaidDuebills.filter(bills => Date.UTC(bills.expirationDate.split("/")[2], bills.expirationDate.split("/")[1], bills.expirationDate.split("/")[0]) <= currentTimeInSeconds);
答案 1 :(得分:0)
首先,您应该首先从expirationDate字符串中获取年,月,日。 而且,您可以基于expirationDate使用创建日期类型。
并使用getTime()转移到Number(毫秒)。然后比较过滤器。
定义getNewDate函数
function getNewDate(expirationDate){
const year = getYear(expirationDate);
const month = getMonth(expirationDate);
const day = getDay(expirationDate);
return newExpirationDate = new Date(year, month, day)
}
并使用该功能进行过滤
this.UnpaidDuebills = this.UnpaidDuebills.filter(bills => getNewDate(bills.expirationDate).getTIme() <= currentTimeInSeconds);
答案 2 :(得分:0)
要执行此过滤器,您需要设置日期限制,该日期必须是午夜,或者只是要确保午夜前一秒的expirationDate。
let currentTimeInSeconds = new Date().getTime() / 1000;
currentTimeInSeconds = currentTimeInSeconds.toString().substring(0, currentTimeInSeconds.toString().indexOf('.'));
this.UnpaidDuebills = this.UnpaidDuebills.filter(bills => {
moment(bills.expirationDate + ' 23:59:59','DD/MM/YYYY hh:mm:ss').valueOf() <= currentTimeInSeconds});
我喜欢使用moment.js来解析日期,但是由您自己决定,您只需要设置一整个小时的时间并进行精确的比较即可。
干杯!