Лучший способ рассчитать разницу между двумя раз в Java? - PullRequest
2 голосов
/ 08 января 2010

У меня есть два раза в массиве, и мне нужно рассчитать разницу между ними обоими. Я преобразовал часы в минуты, затем добавил оставшиеся минуты. Это дает мне общее количество минут в общем, когда я делаю это для обоих, я просто минус одно общее количество минут от другого. Затем преобразуйте их обратно в часы и минуты.

double no1 = Double.parseDouble(array[i][4]);
int time1_calc = (int) (no1 * 100); //Remove decimal point
int time1hours = (time1_calc) / 100;
int time1mins = (time1_calc) % 100;
int time1HM = time1hours*60;
int time1_total = time1HM + time1mins;

Приведенный выше код используется во второй раз, затем я использую:

int total = time2_total - time1_total;

Для этого все расчеты «смотрят» на работу, но, например, разница между 10,18 и 09,35 составляет всего 1 час 23 минуты или 83 минуты в целом. Кажется, моя программа показывает 43 минуты.

Я пробовал другие способы, но все еще не могу заставить его работать, есть идеи?

Ответы [ 6 ]

4 голосов
/ 08 января 2010

Используйте объект DateFormat (вероятно, SimpleDateFormat) для анализа вашей строки и не пытайтесь использовать parseDouble() (это для анализа одного числа, которое времени нет).

2 голосов
/ 08 января 2010
int time1mins = (time1_calc) % 100;

Минуты - это не остаток часов, деленный на 100, а на 60. Это то, для чего предназначен этот бит кода?

Кроме того, вам лучше использовать объект Календарь .

2 голосов
/ 08 января 2010

Взгляните на библиотеку Joda .

Если вы хотите сделать это самостоятельно, то ваш код мне кажется правильным.

1 голос
/ 08 января 2010
Calendar time1 =  Calendar.getInstance();
// assign time1 date from your array

Calendar time2 =  Calendar.getInstance();
// assign time2 date from your array

long diff = time1.getTimeInMillis() - time2.getTimeInMillis();
0 голосов
/ 10 апреля 2013
long timeMillis = System.currentTimeMillis();
System.out.println("Current time in millis:"+timeMillis);     
Thread.sleep(1200);   
long timeMillis2 = System.currentTimeMillis();
System.out.println("Current time in millis:"+timeMillis2);
System.out.println("Difference betwwen 2 times:"+(timeMillis2-timeMillis)); 
0 голосов
/ 08 января 2010

Использовать объект даты. Затем используйте его метод getTime. Это даст вам время в миллисекундах (долго). Затем вычтите время. а затем преобразовать их в минуты и часы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...