Android - 以HH为单位的多个时间长度的总和:mm

时间:2014-02-02 22:44:21

标签: android

我一直在努力获得两小时和几分钟的时间总和,我意识到这可能已被多次覆盖,但我必须在错误的地方寻找。我想找到开车时间的总和。所以有人在时间卡上写下他们从0902开车到1105,休息时间从1156开到1541.我有它所以它计算了驾驶的个人时间,02:03和03:45但是我需要添加这些时间在一起。

我知道我可以做数学但是我更愿意使用相同的方法来计算个别时间但是使用加法而不是减法。它会正确添加分钟,但不会从第一次添加小时数。所以上述时间的总和显示为03:48。

或者,如果时间是02:31和03:50,总数将显示为4:21。任何帮助将不胜感激。

//Total1 = 02:31 Total2 = 03:50 but sum of both only = 4:21  not 6:21 doesn't add first time hours to total

    try {
        datec = simpleDateFormat.parse(Total1);
        }catch(ParseException pe){
            shiftHours.setText("err");
        } catch (java.text.ParseException e) {
            shiftHours.setText("err");
        }
        catch(NullPointerException npe) {
            shiftHours.setText("err");
        }


    try {
        dated = simpleDateFormat.parse(Total2);
        }catch(ParseException pe){
            shiftHours.setText("err");
        } catch (java.text.ParseException e) {
            shiftHours.setText("err");
        }
        catch(NullPointerException npe) {
            shiftHours.setText("err");
        }

    long tdifference = dated.getTime() + datec.getTime();
    int tdays = (int) (tdifference / (1000*60*60*24));  
    int thours = (int) ((tdifference - (1000*60*60*24*tdays)) / (1000*60*60)); 
    int tmin = (int) (tdifference - (1000*60*60*24*tdays) - (1000*60*60*thours)) / (1000*60);
    String dh = Integer.toString(thours);
    String dm = Integer.toString(tmin);

    shiftHours.setText(dh);
    shiftMins.setText(dm);

1 个答案:

答案 0 :(得分:0)

你将两个时钟时间相加的问题是凌晨3:50和凌晨2:31,毫秒是无关紧要的。

正确的方法是将持续时间转换为3:50的单位为3 + 50/60,而2:31则为2 + 31/60,这将为您提供小时数。

将给出6.35,应该转换为6:(35 * 60)/ 100,这是6:21小时。

希望很清楚