aspose file tools*
The moose likes Java in General and the fly likes Time format in Java Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login


Win a copy of Spring in Action this week in the Spring forum!
JavaRanch » Java Forums » Java » Java in General
Bookmark "Time format in Java " Watch "Time format in Java " New topic
Author

Time format in Java

Swapna Gouri Kalanidhi
Ranch Hand

Joined: Mar 14, 2008
Posts: 107
Hello Ranchers
I have a program where I want to subtract 2 time formats, say (24:00:00 - 12:12:12). Of which one of the time is being fetched from the database. Which data type should I use for this type of calculations. I have tried using double data type but the format of HH:MM:SS is not supported by double and am getting a NumberFormatException. If I try to use String data type then I'm not able to perform the subtraction. The database am using here is MySQL and I cannot change the time format to some other as the other types also are in HH:MM:SS format.

How can I overcome this problem? Can anyone suggest me some way out? Your help would be much appreciated !



Thanks & Regards
Swapna Gouri
I "try", I "catch" and "finally" WIN !!!
Rob Spoor
Sheriff

Joined: Oct 27, 2005
Posts: 19718
    
  20

java.util.Date comes to mind:

Output: 12:47:48


SCJP 1.4 - SCJP 6 - SCWCD 5 - OCEEJBD 6
How To Ask Questions How To Answer Questions
Tony Docherty
Bartender

Joined: Aug 07, 2007
Posts: 2310
    
  49
Robs solution works fine for the times given and may well be all you need but you should check to make sure all time difference calculations will be for simple time differences regardless of dates. The problem is potentially significantly more complex if, for example, the locale supports daylight saving and you have to find the difference between 00:15 and 03:30 on a daylight saving change-over day when there will be an extra (or missing) hour to contend with.
Swapna Gouri Kalanidhi
Ranch Hand

Joined: Mar 14, 2008
Posts: 107
Hi Rob
Thanks a lot for the quick response. Will apply this logic...

@ Tony
Yes Tony, your point should be taken into consideration. Thanks for reminding !
Swapna Gouri Kalanidhi
Ranch Hand

Joined: Mar 14, 2008
Posts: 107
Hi Rob
I have applied the logic you have suggested, but am facing a problem now. I'm not getting the desired output. Say for example: 24:00:00 - 05:05:05 = 18:54:55. But the answer that am getting is 00:08:995. Not sure how it's getting calculated. Here's my program:

Here, Idle time is being fetched from the database. Before formatting, am able to view something like a FULL date format, Tuesday, April 12, 1969. What I actually want is difference in timings, irrespective of dates. How can I achieve this? And why am I not getting the expected result?
Rob Spoor
Sheriff

Joined: Oct 27, 2005
Posts: 19718
    
  20

MM means the month. For the minutes you really must use lowercase m's.

As for the dates, if you create both dates using the same date-less date format it should give them the same date. The example code I wrote earlier nicely puts the dates at January 1st 1970 (January 2nd for 24:00:00).
Swapna Gouri Kalanidhi
Ranch Hand

Joined: Mar 14, 2008
Posts: 107
Hi Rob
I'm facing problems in calculating the date difference. Here is the code snippet:


All that I want is the difference of d3 and d4, which are parsed time variables(say 23:59:59). As you have said earlier, if I use getTime() then am not getting the desired output. Now, if I'm parsing String to Double, due to colon(hh:mm:ss), am getting a NumberFormatException. And if I try to take both d3 and d4 as Strings, then am not able to perform subtraction.

I have also tried using some fields in DateFormat class like HOUR_OF_DAY0_FIELD etc to get the hour alone, so that I can subtract the hrs. But still not getting desired output. I have seen add method in Calendar class, thought it might help me. But am not able to use format method in Calendar class.

How should I move forward from here? Kindly suggest me a way out !
Seetharaman Venkatasamy
Ranch Hand

Joined: Jan 28, 2008
Posts: 5575

Hi swapna,

i see in your code something like "String d3 = format.format(date1); " why?

Rob mentioned clearly . please follow the exact steps
Swapna Gouri Kalanidhi
Ranch Hand

Joined: Mar 14, 2008
Posts: 107
Hello Seetharaman
I have tried what Rob had said prior. Here is the code and the output of it:

Output:

I actually don't need the date, I only need the time, like 23:59:59. That's the reason why I used format() again. The output should be something like (23:59:59) - (05:05:05) = 18:54:54. But am getting it as 00:24:54. Not sure why am getting this and where the error is. Would really appreciate any help !
Rob Spoor
Sheriff

Joined: Oct 27, 2005
Posts: 19718
    
  20

What is the exact value of machit, before you parse it?
Seetharaman Venkatasamy
Ranch Hand

Joined: Jan 28, 2008
Posts: 5575

Hi ,

i know it is workaround, you can try this
Swapna Gouri Kalanidhi
Ranch Hand

Joined: Mar 14, 2008
Posts: 107
Thank you SeethaRaman ! Sorry for the delayed response, was struck with some other error. Will let you know how it works.
Swapna Gouri Kalanidhi
Ranch Hand

Joined: Mar 14, 2008
Posts: 107
Thanks a bunch Seetharaman ! Your work around is working perfectly. This was what I exactly wanted. Can I know how you got to know that we can get hours, minutes and seconds by such calculation? Am eager to know how it all worked. I just wish to know how getTime() method works and how we can calculate or extract the exact time from it. Is there any rule or method for calculating? I understood how you were calculating but I want to know why you did that calculation.

Anyways, thanks a lot again !

Thanks Rob ! This was a very big puzzle for me and without your help, I wouldn't have solved this problem.
 
I agree. Here's the link: http://aspose.com/file-tools
 
subject: Time format in Java