Getting incorrect results when calculating difference between two times

I am working on an android app to keep track of hours between signing in and out.
An employee can sign in one day and sign out the next day or within the same day.

Within the app, I have a function that should calculate the difference between two times.

But I am not getting the correct results…

SimpleDateFormat simpleDateFormat = new SimpleDateFormat("h:mma");

    Date start;
    Date end;
    double difference;

    //Test 1
    start = simpleDateFormat.parse("7:00AM");
    end = simpleDateFormat.parse("3:30PM");
    difference = end.getTime() - start.getTime();
    Log.d("difference", String.valueOf(difference)); // 3.06E7
    Log.d("Time difference", String.valueOf(((difference/1000)/60)/60));
    //Prints '8.5' correct.

    // Text 2
    start = simpleDateFormat.parse("11:00PM");
    end = simpleDateFormat.parse("7:30AM");
    difference = end.getTime() - start.getTime();
    Log.d("difference2", String.valueOf(difference)); // -5.58E7
    Log.d("Time difference2", String.valueOf(((difference/1000)/60)/60));
    //Prints '-15.5' but should print '8.5'

As you can see… the first test works correctly, yet the second test fails.
How can I resolve this issue?