我无法获得正确的持续时间。任何人都可以帮助我找到解决方案
//代码
public static String getDateDifference(java.util.Date start, java.util.Date end) {
logger.info("Enter getDateDifference ");
Calendar startCal = Calendar.getInstance();
startCal.setTime(start);
Calendar endCal = Calendar.getInstance();
endCal.setTime(end);
int hourDiff = Math.abs(endCal.get(Calendar.HOUR_OF_DAY) - startCal.get(Calendar.HOUR_OF_DAY));
int minDiff = Math.abs(endCal.get(Calendar.MINUTE) - startCal.get(Calendar.MINUTE));
String diff = Integer.toString(hourDiff) + ":" + Integer.toString(minDiff);
logger.info("Date Difference : " + diff);
logger.info("Exit getDateDifference ");
return diff;
}
答案 0 :(得分:4)
如果开始时间为23:59且结束时间为00:01,那么这不会失败吗?
相反,只需从两个日期获取毫秒,减去然后转换为小时和分钟。
long millis = end.getTime() - start.getTime();
long seconds = millis/1000L;
long hours = seconds/3600L;
long mins = (seconds % 3600L) / 60L;
答案 1 :(得分:3)
如果你可以使用JodaTime,这就变得相当微不足道了。像这样:
Period period = new Period( new DateTime( start ), new DateTime( end ), PeriodType.time() );
return period.getHours() + ":" + period.getMinutes();
答案 2 :(得分:0)
你为什么不做以下
1)将您的2个日期转换为公共单位(此处为时数)
2)计算差异
3)将结果转换为您想要的格式(日期,字符串...)
我没有方便的代码,但它应该是相当直接的。
你的方法可以解决一些小错误,例如当你超过24小时或低于0小时忘记增加/减少一天。 如果你想突然添加分钟和秒钟,也难以维持......
希望这会有所帮助
杰森