我想用小时/分钟/秒来计算两个日期之间的差值。
我的代码有一个小问题,它是:
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.
有没有人看到我做错了什么?
发布于 2011-03-18 19:46:01
试一试
long diffSeconds = diff / 1000 % 60;
long diffMinutes = diff / (60 * 1000) % 60;
long diffHours = diff / (60 * 60 * 1000);
注意:这里假设diff
是非负的。
发布于 2013-11-15 18:10:56
我更喜欢使用推荐的java.util.concurrent.TimeUnit
类。
long diff = d2.getTime() - d1.getTime();//as given
long seconds = TimeUnit.MILLISECONDS.toSeconds(diff);
long minutes = TimeUnit.MILLISECONDS.toMinutes(diff);
发布于 2011-03-18 19:51:42
如果您能够使用外部库,我建议您使用Joda-Time,请注意:
Joda time是JavaSE8之前的
事实上的标准日期和时间库,现在要求用户迁移到java.time (JSR310)。
between计算示例:
Seconds.between(startDate, endDate);
Days.between(startDate, endDate);
https://stackoverflow.com/questions/5351483
复制相似问题