• Post Reply Bookmark Topic Watch Topic
  • New Topic

java.util.Date on different JVMs on different timezones  RSS feed

 
Jimmy Ho
Ranch Hand
Posts: 61
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
If I serialize a java.util.Date object, and send it to another JVM that's on a different time zone, will the time zones be automatically accounted for?

I'm assuming it does because in the JavaDocs, it says the Date object really just stores the milliseconds since 1/1/1970, 00:00:00 **GMT**. Theoretically, this means if I serialize a Date object that's 3pm Eastern Time, and send it to a JVM that's on Pacific Time, then printing out the date should show either 3pm Eastern Time, or 12pm Pacific Time, BUT NOT 3pm Pacific Time.

So that's the behavior I want, and it seems to behave that way according to the documentation and my understanding of Java. Does anyone see anything wrong with this?
 
Jesper de Jong
Java Cowboy
Sheriff
Posts: 15858
80
Android IntelliJ IDE Java Scala Spring
  • Mark post as helpful
  • send pies
  • Quote
  • Report post to moderator
Class java.util.Date doesn't know anything about timezones. As you already found out, a Date object indicates a specific point in time, independent of time timezone. So if you serialize a Date object, send it to a remote computer in a different timezone, and deserialize it there, the deserialized Date object still indicates the exact same point in time.

So indeed, if you have a Date that represents 09/25/2007 3pm Eastern time, it will still indicate 3pm Eastern time, which corresponds to 12pm Pacific time, if you send it to a computer in the Pacific timezone.

If you print a Date object, it will by default be displayed in the timezone of the computer you're running your Java code on. If you want the Date object printed in a specific timezone, then use a DateFormat object and set the timezone on that format object:
 
Consider Paul's rocket mass heater.
  • Post Reply Bookmark Topic Watch Topic
  • New Topic
Boost this thread!