比较时间:检查给定时间是否在另一时间的一定时间内

时间:2013-12-07 20:43:50

标签: java android time android-calendar android-date

正如标题所述;有没有办法比较时间,看看它们是否在彼此的一定时间内? IE浏览器。判断Time1是否在Time2的15分钟内的方法。一个更复杂的例子可能是在75分钟内(因为小时也会改变,因此将分钟数重置为0.

在java / android中有很多不同的比较日期和时间的方法。有Time类,Date类和Calendar类。甚至还有compareTo方法和方法来检查日期是在另一个之前还是之后,但是我找不到解决问题的方法。

另一个例子:

如果我有Time1,12:30和Time2,12:10,我想检查他们是否相隔15分钟。我可以比较分钟差异的差异。 30 - 10 = 20. 20显然不低于15.

但是,Time1是12:56而Time2是13:02,这种方法不起作用。 2 - 56 = -54,但实际差异为6.一种解决方案是,如果您知道以后哪个时间,请检查后一分钟是否小于前一分钟。如果不是,则在前一分钟加60.

这是比较好的方法吗?这会给我的代码增加很多复杂性,特别是当我需要检查小时和日期时。是否有更简单的解决方案或api可用?

4 个答案:

答案 0 :(得分:5)

使用时间戳(自1970年以来的毫秒数)来检查日期的差异。

long timestamp1 = date1.getTime();
long timestamp2 = date2.getTime();
if (Math.abs(timestamp1 - timestamp2) < TimeUnit.MINUTES.toMillis(15)) {
    …
}

答案 1 :(得分:0)

试试这个:

Calendar start_time = Calendar.getInstance();
// set exact start_time here
Calendar end_time = Calendar.getInstance();
// set exact end_time here

// Make sure to set Calendar.MINUTE
start_time.add(Calendar.MINUTE, 15); // adding 15 minutes to the start_time
if (start_time.after(end_time)) {
    // times are less than or equal to 15 mins apart
} else {
    // times are more than 15 mins apart
}

答案 2 :(得分:0)

比较时间的最佳方法是将所有内容转换为一个标准单位。我会写一个简单的方法来花费时间并将它们乘以60以将它们转换为分钟。然后,因为你有几分钟的时间,比较很容易。

答案 3 :(得分:0)

如果您只需要比较格式hh:mm:

,请尝试此操作
String txtTime1; // input with format hh:mm
String txtTime2; // input with format hh:mm
int hour1 = Integer.parseInt(txtTime1.split(":")[0]);
int hour2 = Integer.parseInt(txtTime2.split(":")[0]);
int min1  = Integer.parseInt(txtTime1.split(":")[1]);
int min2  = Integer.parseInt(txtTime2.split(":")[1]);
int time1 = hour1 * 60 + min1;
int time2 = hour2 * 60 + min2;
if(Math.abs(time1 - time2) <= 15) {
    // equal or less then 15 minute difference
} else {
    // more then 15 minute difference
}

如果您比较整个日期,我建议您使用UNIX时间戳方法。