8am is 0800; 1130pm is 2330 - the difference is 15.5hours, as your code shows. Are you sure you want the answer 3.5? Because that's not correct when you are concerned about AM and PM.
If you don't care about AM/PM, then I suggest you just either make sure both calendar instances are set to AM (or PM, doesn't matter so long as they are the same) or do basic arithmetic on the hours and minutes portions of your Calendar instance, rather than rely of milliseconds from the epoch. e.g.
Be careful not to use Calendar.HOUR_OF_DAY as that is based on the 24 hour clock and you will get the answer 15.5 again.