【问题标题】:Calculate the difference in time between two date and time in the format HH/MM/SS in java? [duplicate]在java中以HH/MM/SS格式计算两个日期和时间之间的时间差? [复制]
【发布时间】:2014-02-21 17:50:09
【问题描述】:

我在我的程序中存储了一个打卡时间和打卡时间,格式为 HH/MM/SS 作为字符串。如何计算两者之间的小时、分钟和秒的差异?如有必要,我可以将两者转换回日期,但我一生都无法弄清楚如何计算差异!

例如

时钟输入 = 12:10:45 打卡 = 14:10:50

timeDiff 应该是 02:00:15。

提前致谢。

【问题讨论】:

标签: java date time clock difference


【解决方案1】:

一旦你有了这两个日期,你就可以通过 getTime() 来获取时间,单位是毫秒:

long date1Ms = clockIn.getTime();
long date2Ms = clockOut.getTime();
long difference = date1Ms - date2Ms;

一旦你有了 Ms 的差异,转换为小时/分钟/秒就很容易了:

    int hoursDiff = (int) (difference / (60 * 60 * 1000));
    int hoursMs = hoursDiff * 60 * 60 * 1000;
    int minsDiff = (int) ((difference - hoursMs) / (60 * 1000));
    int minsMs = hoursMs + minsDiff * 60 * 1000;
    int secDiff = (int) ((difference - minsMs) / 1000);

在这里,hoursDiff、minsDiff 和 secDiff 为您提供所需的细分。

【讨论】:

    【解决方案2】:

    你可以这样做来实现时差

    SimpleDateFormat sdf=new SimpleDateFormat("HH:mm:ss");
    
    Date d1 = sdf.parse("12:10:45");
    Date d2 = sdf.parse("14:10:50");
    
    long diff = Math.abs(d1.getTime() - d2.getTime());
    long diffSeconds = diff / 1000 % 60;
    long diffMinutes = diff / (60 * 1000) % 60;
    long diffHours = diff / (60 * 60 * 1000) % 24;
    
    System.out.println(diffHours+":"+diffMinutes+":"+diffSeconds);
    

    希望这会有所帮助。

    【讨论】:

    • 做一个夜班工作并得到发票而不是薪水的人真是太糟糕了。
    • 我明白,但 OP 想要这样。
    猜你喜欢
    • 2012-10-29
    • 1970-01-01
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多