Android Java: как вычесть два раза? - PullRequest
11 голосов
/ 18 августа 2010

Я использую какой-то секундомер в своем проекте, и у меня есть

start time ex: 18:40:10 h
stop time  ex: 19:05:15 h

Мне нужен результат из этих двух значений, таких как final time = stop - start

Я нашел несколько примеров, но все ониочень запутанно

Есть ли простое решение?

Ответы [ 3 ]

28 голосов
/ 18 августа 2010

Если у вас есть строки, вам нужно проанализировать их в java.util.Date, используя java.text.SimpleDateFormat.Что-то вроде:

        java.text.DateFormat df = new java.text.SimpleDateFormat("hh:mm:ss");
        java.util.Date date1 = df.parse("18:40:10");
        java.util.Date date2 = df.parse("19:05:15");
        long diff = date2.getTime() - date1.getTime();

Здесь diff - это количество миллисекунд, прошедших между 18:40:10 и 19: 05: 15.

РЕДАКТ. 1:

Найденометод онлайн для этого (на http://www.javaworld.com/javaworld/jw-03-2001/jw-0330-time.html?page=2):

  int timeInSeconds = diff / 1000;
  int hours, minutes, seconds;
  hours = timeInSeconds / 3600;
  timeInSeconds = timeInSeconds - (hours * 3600);
  minutes = timeInSeconds / 60;
  timeInSeconds = timeInSeconds - (minutes * 60);
  seconds = timeInSeconds;

РЕДАКТИРОВАТЬ 2:

Если вы хотите, чтобы это было в виде строки (это неаккуратный способ, но он работает):

String diffTime = (hours<10 ? "0" + hours : hours) + ":" + (minutes < 10 ? "0" + minutes : minutes) + ":" + (seconds < 10 ? "0" + seconds : seconds) + " h";

РЕДАКТИРОВАТЬ 3:

Если вы хотите, чтобы миллисекунды просто делали это

long timeMS = diff % 1000;

Затем вы можете разделить это на 1000, чтобы получить дробную часть ваших секунд.

12 голосов
/ 18 августа 2010

Если вы используете java.util.Date :

long totalTime = endDate.getTime() - startDate.getTime();

Результатом будет общее время в миллисекундах.

0 голосов
/ 22 декабря 2018

Попробуйте этот ответ, это вам очень поможет

с здесь

В этом ответе вы найдете, что вычтите два раза, отбрасывая день, месяц и год.

дает количество минут, которое вы потратите, пока не достигнете второго значения времени.

...