时间问题

时间:2010-11-12 07:48:16

标签: java

我无法获得正确的持续时间。任何人都可以帮助我找到解决方案

//代码

 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;
}

3 个答案:

答案 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小时忘记增加/减少一天。 如果你想突然添加分钟和秒钟,也难以维持......

希望这会有所帮助

杰森