[fedora-java] Re: Java time zone bug wrt GB/Eire zone?
Joe Desbonnet
joe at galway.net
Tue Apr 17 19:29:45 UTC 2007
I think I've found the answer. Due to an amazingly silly feature of
the TimeZone API which returns a GMT timezone for invalid timezone ids
(not null or exception as you'd expect) ... i didn't notice that the
correct timezone id should have been "GB-Eire" and not "GB/Eire".
Sorry...
Joe.
On 4/17/07, Joe Desbonnet <joe at galway.net> wrote:
> Just when I thought I really understood the Java time API this test
> case below threw me today. Same results with the current FC6 Java
> stack (up to date) and Sun JDK (1.5.0_07).
>
> Why oh why is 17:00 UK/Irish local time the same as 17:00 UTC ? The
> local time should be one hour ahead due to daylight savings.? Funny -
> I wrote lots of code last year relating to logging sensor data and I
> had no problems normalizing the timestamps to UTC. Now I just can seem
> to do it. A bug in Java timezone files or my brain?
>
> import java.util.Date;
> import java.util.TimeZone;
> import java.text.SimpleDateFormat;
> public class DateTest {
>
> public static void main (String arg[]) throws Exception {
> TimeZone localTz = TimeZone.getTimeZone ("GB/Eire");
> SimpleDateFormat localDateFormat = new SimpleDateFormat ("yyyyMMdd HH:mm:ss");
> localDateFormat.setTimeZone(localTz);
>
> TimeZone utcTz = TimeZone.getTimeZone ("UTC");
> SimpleDateFormat utcDateFormat = new SimpleDateFormat("yyyyMMdd HH:mm:ss");
> utcDateFormat.setTimeZone(utcTz);
>
> String datetime = "20070417 17:00:00";
>
> Date d1 = localDateFormat.parse(datetime);
> Date d2 = utcDateFormat.parse(datetime);
>
> if (d1.getTime() == d2.getTime()) {
> System.err.println ("Error: GB/Eire = UTC + Daylight Savings (ie
> d1-d2 = 1 hour, not 0 hour)");
> }
> }
> }
>
More information about the java-devel
mailing list