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

Ще се радвам,ако някой може да помогне :) 

Поздрави!