如何过滤掉2个日期范围内的数据
How to filter out data within 2 date ranges
您好,我正在尝试过滤掉不在 2 个给定日期之间的数据
我目前有这个承诺
const p = await new Promise((resolve: any, reject: any) => {
rpCacheWrapper(options)
.then((res: any) => {
const date = _.uniq(_.map(res, 'Activity Id'));
date.filter((each: any) => {
const timeCompareStartDate = moment(
each['Start Date '] || ''
).isBetween(req.query.start as string, req.query.end as string);
const timeCompareEndDate = moment(
each['End Date'] || ''
).isBetween(req.query.start as string, req.query.end as string);
return timeCompareStartDate && timeCompareEndDate;
});
resolve(date);
})
.catch(reject);
});
过滤器不正确我正在尝试寻找一种简单的方法来过滤掉不在这两个查询 req.query.end 和开始
之间的日期
这个样本数据集
{
Value: [
{
"Activity Id": "05005413-05",
"Activity Name": "UNIT 1 ASBESTOS REMOVAL; PERMITS (CSP, FSI, HWP)",
"Start Date ": "2020-11-09 07:00:00.0",
"End Date": "2021-05-17 15:00:00.0",
"Work Group Name": "PSCF",
"Unit ": "01",
Status: "READY",
"Work Pln Factor": ", ",
},
{
"Activity Id": "B2121",
"Activity Name": "Begin Work Week 2121",
"Start Date ": "2021-05-24 00:00:00.0",
"End Date": "2021-05-24 00:00:00.0",
"Work Pln Factor": ", ",
},
{
"Activity Id": "05005413-35",
"Activity Name": "SCAFFOLD SUPPORT TEAM - CARPENTERS & LABORERS",
"Start Date ": "2020-11-09 06:00:00.0",
"End Date": "2021-06-03 16:00:00.0",
"Work Group Name": "PSCF",
"Unit ": "01",
Status: "READY",
"Work Pln Factor": ", ",
},
{
"Activity Id": "04912309-35",
"Activity Name": "SCAFFOLD SUPPORT TEAM - CARPENTERS & LABORERS",
"Start Date ": "2020-11-09 06:00:00.0",
"End Date": "2021-06-30 16:00:00.0",
"Work Group Name": "PSCF",
"Unit ": "01",
Status: "READY",
"Work Pln Factor": ", ",
},
];
}
所以如果开始时间 if start=21-JUN-2021 end=17-MAY-2021 它应该从数组中过滤掉以下内容
{
"Activity Id": "B2121",
"Activity Name": "Begin Work Week 2121",
"Start Date ": "2021-05-24 00:00:00.0",
"End Date": "2021-05-24 00:00:00.0",
"Work Pln Factor": ", ",
},
原始数据源需要稍微清理一下,我不确定“开始日期”(末尾有 space)是否有错字。我是这样对待的。此过滤器的设置方式是排除 范围内的项目。干杯
const data = {
Value: [{
"Activity Id": "05005413-05",
"Activity Name": "UNIT 1 ASBESTOS REMOVAL; PERMITS (CSP, FSI, HWP)",
"Start Date": "2020-11-09 07:00:00.0",
"End Date": "2021-05-17 15:00:00.0",
"Work Group Name": "PSCF",
"Unit ": "01",
"Status": "READY",
"Work Pln Factor": ", ",
},
{
"Activity Id": "B2121",
"Activity Name": "Begin Work Week 2121",
"Start Date": "2021-05-24 00:00:00.0",
"End Date": "2021-05-24 00:00:00.0",
"Work Pln Factor": ", ",
},
{
"Activity Id": "05005413-35",
"Activity Name": "SCAFFOLD SUPPORT TEAM - CARPENTERS & LABORERS",
"Start Date": "2020-11-09 06:00:00.0",
"End Date": "2021-06-03 16:00:00.0",
"Work Group Name": "PSCF",
"Unit ": "01",
"Status": "READY",
"Work Pln Factor": ", "
},
{
"Activity Id": "04912309-35",
"Activity Name": "SCAFFOLD SUPPORT TEAM - CARPENTERS & LABORERS",
"Start Date": "2020-11-09 06:00:00.0",
"End Date": "2021-06-30 16:00:00.0",
"Work Group Name": "PSCF",
"Unit ": "01",
"Status": "READY",
"Work Pln Factor": ", "
}
]
}
const range = ["2021-05-17", "2021-06-21"];
const filtered = data.Value.filter(e => !(new Date(e["Start Date"]) >= new Date(range[0]) && new Date(e["End Date"]) <= new Date(range[1])));
console.log(filtered);
您好,我正在尝试过滤掉不在 2 个给定日期之间的数据
我目前有这个承诺
const p = await new Promise((resolve: any, reject: any) => {
rpCacheWrapper(options)
.then((res: any) => {
const date = _.uniq(_.map(res, 'Activity Id'));
date.filter((each: any) => {
const timeCompareStartDate = moment(
each['Start Date '] || ''
).isBetween(req.query.start as string, req.query.end as string);
const timeCompareEndDate = moment(
each['End Date'] || ''
).isBetween(req.query.start as string, req.query.end as string);
return timeCompareStartDate && timeCompareEndDate;
});
resolve(date);
})
.catch(reject);
});
过滤器不正确我正在尝试寻找一种简单的方法来过滤掉不在这两个查询 req.query.end 和开始
之间的日期这个样本数据集
{
Value: [
{
"Activity Id": "05005413-05",
"Activity Name": "UNIT 1 ASBESTOS REMOVAL; PERMITS (CSP, FSI, HWP)",
"Start Date ": "2020-11-09 07:00:00.0",
"End Date": "2021-05-17 15:00:00.0",
"Work Group Name": "PSCF",
"Unit ": "01",
Status: "READY",
"Work Pln Factor": ", ",
},
{
"Activity Id": "B2121",
"Activity Name": "Begin Work Week 2121",
"Start Date ": "2021-05-24 00:00:00.0",
"End Date": "2021-05-24 00:00:00.0",
"Work Pln Factor": ", ",
},
{
"Activity Id": "05005413-35",
"Activity Name": "SCAFFOLD SUPPORT TEAM - CARPENTERS & LABORERS",
"Start Date ": "2020-11-09 06:00:00.0",
"End Date": "2021-06-03 16:00:00.0",
"Work Group Name": "PSCF",
"Unit ": "01",
Status: "READY",
"Work Pln Factor": ", ",
},
{
"Activity Id": "04912309-35",
"Activity Name": "SCAFFOLD SUPPORT TEAM - CARPENTERS & LABORERS",
"Start Date ": "2020-11-09 06:00:00.0",
"End Date": "2021-06-30 16:00:00.0",
"Work Group Name": "PSCF",
"Unit ": "01",
Status: "READY",
"Work Pln Factor": ", ",
},
];
}
所以如果开始时间 if start=21-JUN-2021 end=17-MAY-2021 它应该从数组中过滤掉以下内容
{
"Activity Id": "B2121",
"Activity Name": "Begin Work Week 2121",
"Start Date ": "2021-05-24 00:00:00.0",
"End Date": "2021-05-24 00:00:00.0",
"Work Pln Factor": ", ",
},
原始数据源需要稍微清理一下,我不确定“开始日期”(末尾有 space)是否有错字。我是这样对待的。此过滤器的设置方式是排除 范围内的项目。干杯
const data = {
Value: [{
"Activity Id": "05005413-05",
"Activity Name": "UNIT 1 ASBESTOS REMOVAL; PERMITS (CSP, FSI, HWP)",
"Start Date": "2020-11-09 07:00:00.0",
"End Date": "2021-05-17 15:00:00.0",
"Work Group Name": "PSCF",
"Unit ": "01",
"Status": "READY",
"Work Pln Factor": ", ",
},
{
"Activity Id": "B2121",
"Activity Name": "Begin Work Week 2121",
"Start Date": "2021-05-24 00:00:00.0",
"End Date": "2021-05-24 00:00:00.0",
"Work Pln Factor": ", ",
},
{
"Activity Id": "05005413-35",
"Activity Name": "SCAFFOLD SUPPORT TEAM - CARPENTERS & LABORERS",
"Start Date": "2020-11-09 06:00:00.0",
"End Date": "2021-06-03 16:00:00.0",
"Work Group Name": "PSCF",
"Unit ": "01",
"Status": "READY",
"Work Pln Factor": ", "
},
{
"Activity Id": "04912309-35",
"Activity Name": "SCAFFOLD SUPPORT TEAM - CARPENTERS & LABORERS",
"Start Date": "2020-11-09 06:00:00.0",
"End Date": "2021-06-30 16:00:00.0",
"Work Group Name": "PSCF",
"Unit ": "01",
"Status": "READY",
"Work Pln Factor": ", "
}
]
}
const range = ["2021-05-17", "2021-06-21"];
const filtered = data.Value.filter(e => !(new Date(e["Start Date"]) >= new Date(range[0]) && new Date(e["End Date"]) <= new Date(range[1])));
console.log(filtered);