首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于日期的数组元素过滤

基于日期的数组元素过滤
EN

Stack Overflow用户
提问于 2022-02-10 04:25:02
回答 4查看 47关注 0票数 0

我有如下数组:

代码语言:javascript
复制
data = [
    {
      "startDate": "2021-08-18T00:00:04.498059"
      "endDate": "2021-08-19T00:00:04.4962889"
    },
    {
      "startDate": "2021-08-18T00:00:04.498059"
      "endDate": "2021-08-19T00:00:04.4962889"
    }
    ]

    newArray = [];
    this.data.foreach(element => {
       if((element.startDate - element.endDate) > 7) {
           this.newArray.push(element);
       }
    })

我想遍历上面的数组,并检查对于任何元素,startDate和endDate之间的差异是否大于7天,而不是将该元素推送到新的数组中。

由于日期格式,我不知道我的方法是否正确。我怎么才能正确地做这件事?

EN

回答 4

Stack Overflow用户

发布于 2022-02-10 05:05:42

简单的JavaScript逻辑

  • 计算开始日期和结束日期之间以毫秒为单位的时间差。
  • 通过除以(1000 * 60 * 60 *24)将时间转换为天数。

逻辑为(1000 * 60 * 60 * 24) => 1000 ms =1秒,60秒=1分钟,60分钟=1小时,24小时=1天。

代码语言:javascript
复制
const data = [
    { "startDate": "2021-08-18T00:00:04.498059", "endDate": "2021-08-19T00:00:04.4962889" },
    { "startDate": "2021-08-18T00:00:04.498059", "endDate": "2021-08-26T00:00:04.4962889" },
    { "startDate": "2021-08-18T00:00:04.498059", "endDate": "2021-08-19T00:00:04.4962889" }
];
const newArray = [];
data.forEach(element => {
    const diffTime = new Date(element.endDate) - new Date(element.startDate);
    const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); 
    if (diffDays > 7) {
        newArray.push(element);
    }
});
console.log(newArray);

票数 1
EN

Stack Overflow用户

发布于 2022-02-10 04:34:57

我想这就是你要找的:

代码语言:javascript
复制
let data = [
{
  startDate: "2021-08-18T00:00:04.498059",
  endDate: "2021-08-19T00:00:04.4962889",
},
{
  startDate: "2021-08-11T00:00:04.498059",
  endDate: "2021-08-19T00:00:04.4962889",
}
]


let newArray = [];
data.forEach(element => {
let start = new Date(element.startDate)
let end = new Date(element.endDate)
if((end-start)/1000/60/60/24 > 7)
      newArray.push(element);
   })
   console.log(newArray)

票数 0
EN

Stack Overflow用户

发布于 2022-02-10 04:37:29

代码语言:javascript
复制
const data = [
{
  "startDate": "2021-08-18T00:00:04.498059",
  "endDate": "2021-08-19T00:00:04.4962889"
},
{
  "startDate": "2021-08-18T00:00:04.498059",
  "endDate": "2021-08-19T00:00:04.4962889"
}
]
const newData = [];
data.forEach(element => {
  const startDate = new Date(element.startDate);
  const endDate = new Date(element.endDate);
  const difference = endDate.getTime() - startDate.getTime();
  if (difference > 604800000) {
    newData.push(element);
  }
}
);
console.log(newData);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71059794

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档