无法按日期过滤日期

时间:2019-05-07 15:17:58

标签: javascript arrays angular typescript linq

我写了以下代码

 this.downloadData.filter(
      m => new Date(m.LogTime) >= new Date(localStorage.getItem('fromDate')) && new Date(m.LogTime) <= new Date(localStorage.getItem('toDate'))
      );

但是它从不过滤数据,我需要帮助。值如下所示:

  

localStorage.getItem('fromDate'):2018年9月7日星期五9:10:27 GMT + 0530(印度标准时间)

     

localStorage.getItem('toDate'):2018年9月7日星期五9:30:27 GMT + 0530(印度标准时间)

数组项目1在下面

CPUStatus
:
"23"

LogTime
:
"9/7/2018 9:20:15 AM"
MemoryStatus
:
"24"

数组项目2在下面

CPUStatus
:
"23"
LogTime
:
"9/7/2018 9:02:15 AM"
MemoryStatus
:
""

过滤后,当我做console.log(this.downloadData);我得到了未过滤的结果。

理想情况下,它不应显示第二个数组项, 自从我选择了Fri Sep 07 2018 09:10:27 GMT + 0530(India Standard Time 和 2018年9月7日星期五09:30:27 GMT + 0530(印度标准时间) 不在第二个数组logtime值之间,该值是9/7/2018 9:02:15 AM。

只有第一个应该显示我在做什么错?为什么两个数组项都列出而没有任何过滤器?

2 个答案:

答案 0 :(得分:1)

我自己修复了

this.downloadData = this.downloadData.filter(
      m => new Date(m.LogTime) >= new Date(localStorage.getItem('fromDate')) && new Date(m.LogTime) <= new Date(localStorage.getItem('toDate'))
      );

答案 1 :(得分:1)

检查以下逻辑,让我知道

  var fDate = Date.parse(localStorage.fromDate); // parse to date object
  var tDate = Date.parse(localStorage.toDate);

  this.downloadData = this.downloadData.filter(
          m => fDate-Date.parse(m.LogTime)<=0 && Date.parse(m.LogTime)-tDate<=0
          );

让我知道它是否有帮助