Path: csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!border3.nntp.dca.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!npeer03.iad.highwinds-media.com!news.highwinds-media.com!feed-me.highwinds-media.com!postnews.google.com!j13g2000pro.googlegroups.com!not-for-mail From: loial Newsgroups: comp.lang.java.programmer Subject: Timezones and versions of Java Date: Mon, 23 May 2011 07:38:54 -0700 (PDT) Organization: http://groups.google.com Lines: 72 Message-ID: NNTP-Posting-Host: 92.27.96.235 Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 X-Trace: posting.google.com 1306161534 3395 127.0.0.1 (23 May 2011 14:38:54 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Mon, 23 May 2011 14:38:54 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: j13g2000pro.googlegroups.com; posting-host=92.27.96.235; posting-account=ORTvxwoAAADiCmwF40GLsX3U6yAOA5M5 User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; MS-RTC LM 8; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729),gzip(gfe) Xref: x330-a1.tempe.blueboxinc.net comp.lang.java.programmer:4453 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); } }