【发布时间】:2021-09-07 21:28:02
【问题描述】:
假设我们有一个日期数组
var dateArr = [new Date("Thu Apr 01 2021 00:00:00 GMT+0200"), new Date("Sat May 01 2021 00:00:00 GMT+0200")];
还有一个Date Object,我们需要在dateArr中搜索,例如:
var findDate = new Date("Mon Apr 05 2021 07:50:06 GMT+0200");
我们一起拥有这个 PLUS
- 返回最近日期的函数 dateArr 通过 findDate 可以位于过去或未来
var dateArr = [new Date("Thu Apr 01 2021 00:00:00 GMT+0200"), new Date("Sat May 01 2021 00:00:00 GMT+0200")];
var findDate = new Date("Mon Apr 05 2021 07:50:06 GMT+0200");
var result = getNearestDateInDateArrByFindDate(dateArr, findDate);
console.log(result); //should print to console: Thu Apr 01 2021 00:00:00 GMT+0200
function getNearestDateInDateArrByFindDate(dateArr, findDate) {
var nearestDateInPastOrFuture;
...
return nearestDateInPastOrFuture;
}
到目前为止我尝试过的事情都没有成功......
var dateArr = [new Date("Thu Apr 01 2021 00:00:00 GMT+0200"), new Date("Sat May 01 2021 00:00:00 GMT+0200")];
var findDate = new Date("Mon Apr 05 2021 07:50:06 GMT+0200");
function getNearestDateInDateArrByFindDate(dateArr, findDate) {
console.log(dateArr);
console.log(findDate);
var nearestFutureDates = dateArr.filter(dt => dt.getTime() >= findDate.getTime());
var nearestFutureDates = nearestFutureDates.sort((a, b) => a.getTime() - b.getTime());
var nearestPastOrFutureDate = dateArr.filter(dt => dt.getTime() >= findDate.getTime());
var nearestPastOrFutureDate = nearestPastOrFutureDate.sort((a, b) => (findDate.getTime() - a.getTime()) - (findDate.getTime() - b.getTime()));
console.log(nearestFutureDates);
console.log(nearestPastOrFutureDate);
//returns always sat May 01 2021 00:00:00 GMT+0200
}
getNearestDateInDateArrByFindDate(dateArr, findDate)
不知何故,sn-p 不返回 4 月 1 日,而是 4 月 31 日?
【问题讨论】:
-
如果你正在使用时刻检查这个:stackoverflow.com/a/62380664/5909026
-
我给你做了一个sn-p。如有需要请更正
-
现在试过了,也给我返回了错误的结果:sat May 01 2021 00:00:00 GMT+0200 它似乎只关注未来的日期,但我也需要过去的日期!
-
大部分不相关,但“Thu Apr 01 2021 00:00:00 GMT+0200”是一种非标准日期格式。解释将取决于实现,并且不能保证在所有环境中产生相同的日期。
标签: javascript jquery date datetime