我有当前时间作为 currentTime。
我有 5 个日期对象:
a = 凌晨 2:20 b = 凌晨 2:40 c = 凌晨 3:00 d = 下午 4:00 e = 下午 6:00
时间是下午 3 点 30 分
现在,请记住 a 到 e 已成功转换为 Date() 对象。
在给定当前时间的情况下,我将如何循环遍历这 5 个时间,以确定哪个时间最接近当前时间,但在它之后。因此,例如,我想在这种情况下找到 d 是下一次来。
我只是不确定如何做到这一点。
我有当前时间作为 currentTime。
我有 5 个日期对象:
a = 凌晨 2:20 b = 凌晨 2:40 c = 凌晨 3:00 d = 下午 4:00 e = 下午 6:00
时间是下午 3 点 30 分
现在,请记住 a 到 e 已成功转换为 Date() 对象。
在给定当前时间的情况下,我将如何循环遍历这 5 个时间,以确定哪个时间最接近当前时间,但在它之后。因此,例如,我想在这种情况下找到 d 是下一次来。
我只是不确定如何做到这一点。
// Given an array of Date objects and a start date,
// return the entry from the array nearest to the
// start date but greater than it.
// Return undefined if no such date is found.
function nextDate( startDate, dates ) {
var startTime = +startDate;
var nearestDate, nearestDiff = Infinity;
for( var i = 0, n = dates.length; i < n; ++i ) {
var diff = +dates[i] - startTime;
if( diff > 0 && diff < nearestDiff ) {
nearestDiff = diff;
nearestDate = dates[i];
}
}
return nearestDate;
}
var testDates = [
new Date( 2013, 6, 15, 16, 30 ),
new Date( 2013, 6, 15, 16, 45 ),
new Date( 2013, 6, 15, 16, 15 )
];
console.log( nextDate( new Date( 2013, 6, 15, 16, 20 ), testDates ) );
console.log( nextDate( new Date( 2013, 6, 15, 16, 35 ), testDates ) );
console.log(nextDate(new Date(2013, 6, 15, 16, 50), testDates));
可能有一种更简洁/更快的方法来做到这一点,但我会制作第二个数组,其中包含 a 到 e 的值和 currentTime 之间的差异,然后将第二个数组用于sort
第一个数组(取 diff 的 diff两个值)。