• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
Marshals:
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
Sheriffs:
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
Bartenders:
  • Mikalai Zaikin

Help with System Time

 
Ranch Hand
Posts: 41
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
I'm having a lot of trouble with getting an accurate system time and I wonder if anyone has some thoughts on this:

In my app, I caclulate a timestamp value as follows and use a query to retrieve the cookie data from a DB.


As you can see, I get the java.util.Date() and time()... this should get the local system time. Works fine in my IDE.

however, on our hosted servers, the system time is correct as run by the bash Date command (i.e. not in the webapp!)--> gives correct local time there. However, in the webapp, the time is off by 8 hours!

here are the logs:


what I get from teh shell:


Is there another place where the servlet or system can get it's time? Is there a way to make this system independent -- keep in mind that I'll have to make sure teh DB is in sync.

thanks for any insight... hopefully someone has had this trouble too.

_r
 
Ranch Hand
Posts: 147
Eclipse IDE Tomcat Server Debian
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Are you getting the date returned in GMT instead? I believe that would be eight hours off from Pacific Time.

You could try using Calendar.getInstance().getTimeInMills() instead, and see if that gives you a time that matches the system.
 
Rex Norm
Ranch Hand
Posts: 41
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
hmmm.... on further examination, I note that the time is actually GMT.

Not being a Linux expert, is it possible that the call to system time returns GMT, rather than the GMT +/- offset for the timezone? Could this be a Tomcat thing? (happy to close this thread and start a new one if so..)

_R
 
Bartender
Posts: 1845
10
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
A Date is a moment in time. Timezone is irrelevant to identifying a particular moment in time.

Timezone is almost a rendering/formatting attribute. It only becomes relevant when you are wanting to display the moment in time to a human in a way they can understand. At that point you have to decide how to format it.

So you should use and store Date objects rather than Strings.


 
Rancher
Posts: 4803
7
Mac OS X VI Editor Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Date is a four letter word, at last in Java. Its really not a "date" at all, its a time, specifically number of milliseconds from a time long ago. As a result, if you add one (1) to a Date, most of the time it stays on the same date, but sometimes it changes to the next date.

A simple question: what timezone is the server set up to use? A lot of servers are set to UTC (aka GMT) because its the only zone that makes sense for international use.

The key in Java use of Date objects, and when you want to store a Date object in a RDBMS (say MySql), is that the Date object itself does not have a timezone. When you want to talk about the date with a timezone output, you specify the timezone in the format, not in the Date.

When you use MySql, you can set a timezone both system-wide and for your session. This tells the server how to interpret the date you feed it.
 
Rex Norm
Ranch Hand
Posts: 41
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
The timezone for the bash is GMT, from what I can tell. Tomcat (also residing on the Linux box) is Pacific -1 (whatever is 1 hr EARLIER than pacific)-- and the DB server is on Pacific (the create timestamps bear this out when writing to the DB). Pretty screwed up.

I'm currently working with the hosters to change the time on both servers to match and sync with some authority, so I don't get caught like this. It occurred to me that even if I make a call to an NRC time server, I have little control over the DB (since DB timestamps are used in my app). To make my app more portable, I think I need to first execute:



and use that in my calcs. That way, the way the server timevalue is in sync for both read and write. This solves my problem and is reasonably portable for the particular application of determining which cookie to dig up, and I don't have to worry about syncing time.

in fact, I was thinking I could use a prepared statement with the query as:



Tomcat (and therefore Webapp) Logfiles would be off though, and that **WOULD** make trouble shooting more complex... I'm really perplexed as to why the Tomcat timezone is not working... I'd think at least the logfile times would adjust.

I'm starting a thread in the Tomcat section to see what people know about timezone. thanks for the good insights.

reply
    Bookmark Topic Watch Topic
  • New Topic