Time difference - Java
Здравейте колеги,опитвам да напиша програмка,която при подадени 2 различни часа във формат hh:mm:ss,печати разликата между тях.Примерно :
Input:
10:03:43 15:00:58
Output:
04:57:15
Input:
12:05:00 00:00:00
Output:
11:55:00
До момента след доста справки в интернет написах това:
public static void main(String[] args) throws ParseException {
    Scanner sc = new Scanner(System.in);
    String startTime = sc.next();
    String endTime =sc.next();
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
    Date d1 = sdf.parse(startTime);
    Date d2 = sdf.parse(endTime);
    long elapsed = d2.getTime() - d1.getTime();
    //long hours = elapsed/(3600*1000)%24;
    //long minuti = elapsed/(60 * 1000) % 60;
    //long seconds = elapsed/1000%60;
    String hms = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(elapsed),
            TimeUnit.MILLISECONDS.toMinutes(elapsed) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(elapsed)),
            TimeUnit.MILLISECONDS.toSeconds(elapsed) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(elapsed)));
    if (elapsed>0) {
        System.out.println(hms);
    }else{
    elapsed= elapsed*(-1);
        String hms1 = String.format("%02d:%02d:%02d", TimeUnit.MILLISECONDS.toHours(elapsed),
                TimeUnit.MILLISECONDS.toMinutes(elapsed) - TimeUnit.HOURS.toMinutes(TimeUnit.MILLISECONDS.toHours(elapsed)),
                TimeUnit.MILLISECONDS.toSeconds(elapsed) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(elapsed)));
        System.out.println(hms1);
    }
Проблемът е,че при 2рият тест моят изход е: 12:05:00 [b]вместо[/b] 11:55:00
Ще се радвам,ако някой може да помогне :)
Поздрави!