views:

157

answers:

2

I use some kind of stopwatch in my project and I have

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

I need a result from those two values like final time = stop - start

I found some examples but they all are very confusing .

Is there any simple solution ?

+4  A: 

Assuming you are using java.util.Date:

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

The result will be the total time in milliseconds.

Thierry-Dimitri Roy
Thanks Thierry I completed a task :)
zire
+2  A: 

If you have strings you need to parse them into a java.util.Date using java.text.SimpleDateFormat. Something like:

        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();

Here diff is the number of milliseconds elapsed between 18:40:10 and 19:05:15.

EDIT 1:

Found a method online for this (at 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;

EDIT 2:

If you want it as a string (this is a sloppy way, but it works):

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

EDIT 3:

If you want the milliseconds just do this

long timeMS = diff % 1000;

You can then divide that by 1000 to get the fractional part of your seconds.

quadelirus
Aham i saw samples like that but again I need result as 01:10.34 h , here I get result in millisecond and need more mathematics to get wished result , is there simplest solution ?
zire
See my edit above:
quadelirus
How are you going to get milliseconds in your result if your time is only recording hours, minutes and seconds?
quadelirus
quadelirus Thanks a lot I get what I want :) I use : start= System.currentTimeMillis();but I do some DateFormating to get only hours :) Now I get what I need , thank's again ..
zire
I was done some string formating , but as I tested those line it is better solution :) Thanks one more time quadelirus.
zire