正如标题所述;有没有办法比较时间,看看它们是否在彼此的一定时间内? 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可用?
答案 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时间戳方法。