首页 > 解决方案 > 即使日期相等,日期比较也会返回错误

问题描述

我有一个 datepicker 需要获取日期“12/31/9999”,即使 maxDate 设置为今天。

在此处输入图像描述

我有它这样输入。但是,当我在代码中运行比较时,它返回 false。

private CheckDate(form: FormGroup, group: any) {
     if (form.controls["date"].value == new Date("12/31/9999")) {
         //form.controls["date"].valid = true;
         (group.questions["date"] as DateTimePickerQuestion).maxDate = null;
     }
}

但是,当我将 form.controls["date"].value 与 new Date("12/31/9999") 进行比较时,它会返回 false 并且不会在中间执行我的代码。

这是为什么?这是检查值的即时窗口的复制/粘贴

new Date("12/31/9999")
Fri Dec 31 9999 00:00:00 GMT-0500 (Eastern Standard Time) {}
form.controls["date"].value
Fri Dec 31 9999 00:00:00 GMT-0500 (Eastern Standard Time) {}
form.controls["date"].value == new Date("12/31/9999")
false

标签: angulartypescriptdatepickerangular-material

解决方案


我同意邪猴的建议。您似乎正在尝试比较两个不同的事物。尝试将两个值都转换为字符串或日期,然后从那里开始。在比较日期格式之前,我通常做的是使用 datePipe (因为有时格式也不同,如日期格式 - 例如:

2020 年 1 月 10 日 - 10 月 1 日

2020 年 1 月 10 日 - 1 月 10 日

因此,请确保您正在比较相同类型的对象和相同类型的日期格式!:)


推荐阅读