Timezones and versions of Java
I am trying to convert BST times to EST.
The following code correctly returns a difference of 5 hours between
the 2 times when run under Java 1.5. :
Local Offset 3600000
EST Offset -14400000
EST time Tue May 04 07:48:18 2010
BST time Tue May 04 12:48:18 2010
However if run under Java 1.6 (on the same machine), it returns a time
difference of 6 hours :
Local Offset 3600000
EST Offset -18000000
EST time Tue May 04 06:48:18 2010
BST time Tue May 04 12:48:18 2010
Do I need to do something different in Java 1.6?.
Platform is linux.
class testtz {
public static void main(String[] args) {
Date date = null;
SimpleDateFormat dateFormat = new
SimpleDateFormat("yyyyMMddHHmmss");
try {
date = dateFormat.parse("20100504124818");
}
catch(ParseException pe) {
System.out.println("Error");
}
TimeZone tz1 = TimeZone.getDefault();
long localOffset = tz1.getOffset(date.getTime());
System.out.println("Local Offset " + localOffset);
TimeZone tz2 = TimeZone.getTimeZone("EST");
long remoteOffset = tz2.getOffset(date.getTime());
System.out.println("EST Offset " + remoteOffset);
Date dateToPutInDB = new Date(date.getTime() - localOffset +
remoteOffse;
System.out.println("EST time " + dateToPutInDB)
System.out.println("BST time " + date);
}
}