java毫秒查找最接近当前时间的时间

java毫秒查找最接近当前时间的时间,java,Java,我有以下代码: for(int i=0; i<a.length; i++){ diff[i] = a.getTime() - b.getTime(); } a.getTime() = time in array. b.getTime() = current time on computer. 对每个结果都执行此操作,并使用最低的结果 (创建一个类型为long[]的数组,将abs()值放入其中,然后使用Arrays.sort()对其进行排序) 顺便说一句,您可能只想执行一次b.g

我有以下代码:

for(int i=0; i<a.length; i++){
    diff[i] = a.getTime() - b.getTime();
}

a.getTime() = time in array.
b.getTime() = current time on computer.
对每个结果都执行此操作,并使用最低的结果

(创建一个类型为
long[]
的数组,将abs()值放入其中,然后使用
Arrays.sort()对其进行排序)

顺便说一句,您可能只想执行一次
b.getTime()

对每个结果执行操作,并使用最低的结果

(创建一个类型为
long[]
的数组,将abs()值放入其中,然后使用
Arrays.sort()对其进行排序)

顺便说一句,您可能只想执行一次
b.getTime()

只需保留差异的绝对值(使用
Math.abs
),并跟踪到目前为止看到的最小值以及发生差异的索引

例如:

long currentTime = b.getTime(); // Only call once, to be consistent
long minAbsDiff = Long.MAX_VALUE;
int minIndex = -1;
for(int i=0; i < a.length; i++) {
    diff[i] = a[i].getTime() - currentTime;
    long abs = Math.abs(diff[i]);
    if (abs < minAbsDiff) {
        minAbsDiff = abs;
        minIndex = i;
    }
}
只需保留差异的绝对值(使用
Math.abs
),并跟踪到目前为止看到的最小值以及发生差异的索引

例如:

long currentTime = b.getTime(); // Only call once, to be consistent
long minAbsDiff = Long.MAX_VALUE;
int minIndex = -1;
for(int i=0; i < a.length; i++) {
    diff[i] = a[i].getTime() - currentTime;
    long abs = Math.abs(diff[i]);
    if (abs < minAbsDiff) {
        minAbsDiff = abs;
        minIndex = i;
    }
}
long min=long.MAX\u值;
长电流=b.getTime();
int指数=-1;
对于(int i=0;i
long min=long.MAX\u值;
长电流=b.getTime();
int指数=-1;

对于(int i=0;i),您可以去掉
long[]
数组,只需跟踪到目前为止计算的最低值。当然,但对于初学者来说,我的方法可能更容易。或者您可以创建一个类型列表
Long
并使用
Collections.min
。当然,这更有用,但也更消耗内存。如果您只需要基本操作,为什么要创建对象呢你可以去掉
long[]
数组,只需跟踪到目前为止计算的最低值。当然,但对于初学者来说,我的方法可能更容易。或者你可以创建一个类型列表
Long
并使用
Collections.min
。当然,这更有用,但也更消耗内存。如果只需要基本操作,为什么要创建对象?叹气。你的答案很漂亮(+1)。但至少我发现了一个拼写错误:-)它很长。MAX_VALUE
@s.P.Floyd-seanizer:Doh!修复了,谢谢。我的脑子一半在C#)现在你已经修复了一半的拼写错误:-)@s.P.Floyd-seanizer:Gah!完成:)叹气。你的答案很漂亮(+1)。但至少我发现了一个打字错误。:-)它是
长的。最大值
@s.P.Floyd-seanizer:Doh!修好了,谢谢。我有一半的心思在C上)现在你已经修复了一半的打字错误:-)@S.P.Floyd-seanizer:Gah!完成:)
long currentTime = b.getTime(); // Only call once, to be consistent
long minAbsDiff = Long.MAX_VALUE;
WhateverType minContainer = null;
for (WhateverType x : a) {
    long abs = Math.abs(x.getTime() - currentTime);
    if (abs < minAbsDiff) {
        minAbsDiff = abs;
        minContainer = x;
    }
}
long min = Long.MAX_VALUE;
long current = b.getTime();
int index = -1;
for(int i=0; i<a.length; i++) {
   long diff = Math.abs(current - a.getTime());
   if(diff < min) {
     min = diff;
     index = i;
   }
}