使用5个日期对象javascript查找最接近当前时间的时间

时间:2013-07-15 22:01:43

标签: javascript date time

我将当前时间作为currentTime。

我有5个日期对象:

a = 2:20 am b =凌晨2:40 c =凌晨3:00 d =下午4:00 e =下午6:00

时间是下午3:30

现在,请记住a到e已成功转换为Date()对象。

在给定当前时间的情况下,我如何循环通过那些5来确定哪个时间最接近当前时间,但是在它之后。所以例如我想在这种情况下发现d是下次来的。

我只是不确定如何做到这一点。

2 个答案:

答案 0 :(得分:8)

// 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));

答案 1 :(得分:0)

可能有更简洁/更快的方法,但是我会创建第二个数组,其中a和e之间的值和currentTime之间存在差异,然后将第二个数组用于sort第一个数组(取两个值的差异的差异)。