用java计算日期/时间差

用java计算日期/时间差

我也想计算两个日期之间的差额以小时/分钟/秒为单位。

我的代码有一个小问题,就是:

String dateStart = "11/03/14 09:29:58";String dateStop = "11/03/14 09:33:43";// Custom date formatSimpleDateFormat 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.

有人能看到我做错了什么吗?


小怪兽爱吃肉
浏览 1361回答 3
3回答

慕桂英546537

试一试long diffSeconds = diff / 1000 % 60;  long diffMinutes = diff / (60 * 1000) % 60; long diffHours = diff / (60 * 60 * 1000);注:这假定diff是非阴性的。

慕神8447489

我更喜欢用建议java.util.concurrent.TimeUnit班级,等级。long diff = d2.getTime() - d1.getTime();//as givenlong seconds = TimeUnit.MILLISECONDS.toSeconds(diff);long minutes = TimeUnit.MILLISECONDS.toMinutes(diff);

BIG阳

如果您能够使用外部库,我建议您使用尤达-时间注意到:Joda-Time是Java在JavaSE 8之前事实上的标准日期和时间库。用户现在被要求迁移到java.time(JSR-310)。计算之间的示例:Seconds.between(startDate, endDate);Days.between(startDate, endDate);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java