Re: JDBC Driver and timezones - Mailing list pgsql-jdbc

From Kris Jurka
Subject Re: JDBC Driver and timezones
Date
Msg-id alpine.BSO.2.00.1005190257480.27053@leary.csoft.net
Whole thread Raw
In response to Re: JDBC Driver and timezones  (Thomas Kellerer <spam_eater@gmx.net>)
Responses Re: JDBC Driver and timezones  (Thomas Kellerer <spam_eater@gmx.net>)
List pgsql-jdbc

On Wed, 19 May 2010, Thomas Kellerer wrote:

> System.out.println("DST active: " + TimeZone.getDefault().useDaylightTime());
> System.out.println("DST delta: " + TimeZone.getDefault().getDSTSavings());
>
> it correctly shows me that the JDK knows that DST is active and that it
> should add one hour
> (without setting a timezone when starting the JVM)

I think the problem is that the Java specification for java.sql.Time
requires that the date portion be filled in with 1970-01-01.  So when
trying to determine the zone shift to apply when printing it out, it is
checking with that date instead of today's date as you are expecting.

When reading a timetz value in, we don't need to determine what the zone
shift is, it's explicit, so in this case we shift by the explicit DST
amount.  When printing it back out, the original zone offset has been
discarded and we shift by the non-DST amount because the date 1970-01-01
doesn't use DST.  I think we'd like to be able to override the
getTimezoneOffset value for the Time object, but there's no easy way to do
that without creating our own PgTime object.

Kris Jurka

pgsql-jdbc by date:

Previous
From: Thomas Kellerer
Date:
Subject: Re: JDBC Driver and timezones
Next
From: "Marc Mamin"
Date:
Subject: Re: JDBC Driver and timezones