我想以小时/分钟/秒为单位计算两个日期之间的差异。
我的代码在这里有一个小问题:
String dateStart = "11/03/14 09:29:58"; String dateStop = "11/03/14 09:33:43"; // Custom date format SimpleDateFormat format = new SimpleDateFormat("yy/MM/dd HH:mm:ss"); Date d1 = null; Date d2 = null; try { d1 = format.parse(dateStart); d2 = format.parse(dateStop); } catch (ParseException e) { e.printStackTrace(); } // Get msec from each, and subtract. long diff = d2.getTime() - d1.getTime(); long diffSeconds = diff / 1000; long diffMinutes = diff / (60 * 1000); long diffHours = diff / (60 * 60 * 1000); System.out.println("Time in seconds: " + diffSeconds + " seconds."); System.out.println("Time in minutes: " + diffMinutes + " minutes."); System.out.println("Time in hours: " + diffHours + " hours.");
这应该产生:
Time in seconds: 45 seconds. Time in minutes: 3 minutes. Time in hours: 0 hours.
但是我得到这个结果:
Time in seconds: 225 seconds. Time in minutes: 3 minutes. Time in hours: 0 hours.
有人可以在这里看到我在做什么错吗?
尝试
long diffSeconds = diff / 1000 % 60; long diffMinutes = diff / (60 * 1000) % 60; long diffHours = diff / (60 * 60 * 1000);
注意:这假定diff是非负数。
我更喜欢使用建议的java.util.concurrent.TimeUnit类。
java.util.concurrent.TimeUnit
long diff = d2.getTime() - d1.getTime();//as given long seconds = TimeUnit.MILLISECONDS.toSeconds(diff); long minutes = TimeUnit.MILLISECONDS.toMinutes(diff);