Arrays 用angular2比较日期

Arrays 用angular2比较日期,arrays,angular,date,Arrays,Angular,Date,在我的Angular程序中,我试图根据每个日期是否在两个设定日期之间过滤数组。我将日期设置为本月的第一个和最后一个: StartDate=新日期(this.Date.getFullYear(),this.Date.getMonth(),1); EndDate=新日期(this.Date.getFullYear(),this.Date.getMonth()+1,0) 我让用户选择他们希望查看阵列结果的日期: 开始日期 结束日期 这听起来像是类型问题 当您比较Date类型时,它们通过函数valu

在我的Angular程序中,我试图根据每个日期是否在两个设定日期之间过滤数组。我将日期设置为本月的第一个和最后一个:

StartDate=新日期(this.Date.getFullYear(),this.Date.getMonth(),1);
EndDate=新日期(this.Date.getFullYear(),this.Date.getMonth()+1,0)

我让用户选择他们希望查看阵列结果的日期:


开始日期
结束日期

这听起来像是类型问题

当您比较
Date
类型时,它们通过函数
valueOf()
转换为
number
。比较
字符串
数字
似乎总是返回
false
。这可能就是为什么在您再次设置日期,使
StartDate
EndDate
成为
String
类型之前,它不起作用的原因

我建议要么只保留字符串,只要它是
yyyy-mm-dd
格式。我的意思是,首先将
StartDate
EndDate
声明为字符串,而不是日期

或者,您可以使用类似以下内容解析输入和/或
setValues
函数中的日期:

parseDate(dateString: string): Date {
    if (dateString) {
        return new Date(dateString);
    } else {
        return null;
    }
} 

您的
pto.date
,是字符串还是日期?@mTv它是一个日期,每当用户在变量
startDate
endDate
的输入框中输入日期时,它们就变成字符串,与
pto.date
进行比较,并打印正确的数组。由于某些原因,它对默认值不起作用。我尝试将它们转换为字符串,然后进行比较,但出现了一个错误,它说我无法将日期(
pto.date
)与字符串(
startDate
endDate
)进行比较。您确定
pto.date
日期吗?您是否尝试过打印pto日期的类型?似乎真的很奇怪,当用户设置日期(作为字符串)时,它会工作,但当您最初转换日期时,它不会工作。另外,字符串和日期类型之间的比较也很奇怪。日期在比较之前转换为数字(
.valueOf()
),与数字(,==,==)比较的字符串始终返回
false
@mTv damn,无需担心。好的,在我的模型中,它被声明为一个日期,但我只是循环了一下,做了一个
console.log
,它们都以字符串的形式打印出来。但是,如果我将我的过滤器更改为
this.datePTO=this.ptoData.filter(pto=>pto.date>this.StartDate.toDateString()
.toString
,它会说“
Operator'>”不能应用于类型“date”和“string”。
“很好,至少它有一些意义:P.试着做
.toISOString()
当您第一次声明
StartDate
EndDate
时。等等,为什么要在
.toString()
打开时给出错误?这是否意味着编译器认为
pto.date
日期,但实际上不是?或者我只是把自己弄糊涂了。