How can I calculate the time differences in 24 hour if the user input is 2255 and 2305 the output should be 10 minutes. I got an idea is to separate the input to 2 parts, 2 digits and 2 digits. the first 2 digits is the hour, times it to 60 to make it to minutes. Then plus it with the second 2 digits and then calculate the differences. I dont want use any Date Calendar data type or API to solve it. Thanks
A:
String time1 = "2255";
String time2 = "2305";
SimpleDateFormat format = new SimpleDateFormat("HHmm");
Date date1 = format.parse(time1);
Date date2 = format.parse(time2);
long difference = date2.getTime() - date1.getTime();
difference is in millis you can convert it to any unit or you can use DurationFormatUtils
from apache-commons to pretty format it.
System.out.println("Duration: "+DurationFormatUtils.formatDuration(difference, "HH:mm"));
apache commons has really nice utility functions, apache-commons (lang)
sfaiz
2010-09-28 07:07:54
A:
How to get first 2 digit without using String chartAt.
Highest two digits: number / 100 Lowest two digist: number % 100
But what would you do if user enter 3:05 or 3-05? I think it's problem of usability. Best solution is making UI definitely understandable for user. For example you can use separate fields for hours and minutes.
Donz
2010-09-28 08:13:58
how about if start time is 0025and endTime is 0035, which mean it is already next day
2010-09-28 12:59:17
Do you mean start time is 0035 and end is 0025? So you need to normailze negative result (24 * 60 + (25 - 35)). But if end time is two days before start? As I already said I think it's usability problem. Developer should make controls for input with exact meaning of inputting values.
Donz
2010-09-28 19:56:15