Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-4198035

First hour of year 2000 is in daylight savings time! (Pacific, US)

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Cannot Reproduce
    • Icon: P4 P4
    • None
    • 1.2.0
    • core-libs



      Name: jb33418 Date: 12/16/98


      The first hour of the year 2000, for Pacific/Los Angeles time
      zone, and Locale.US, appears to be in daylight savings time.
      Although the example below demonstrates it just with date
      formatting, I have verified that the time/fields in the
      GregorianCalendar believe it to be true as well.

      Example and source code follow:


      Y2K DLS Bug

      Entering the bug zone...
      millis: 946709999995 date: Fri, Dec 31, 1999 AD 10:59:59 PM PST (Pacific Standard Time)
      millis: 946709999996 date: Fri, Dec 31, 1999 AD 10:59:59 PM PST (Pacific Standard Time)
      millis: 946709999997 date: Fri, Dec 31, 1999 AD 10:59:59 PM PST (Pacific Standard Time)
      millis: 946709999998 date: Fri, Dec 31, 1999 AD 10:59:59 PM PST (Pacific Standard Time)
      millis: 946709999999 date: Fri, Dec 31, 1999 AD 10:59:59 PM PST (Pacific Standard Time)
      millis: 946710000000 date: Sat, Jan 01, 2000 AD 12:00:00 AM PDT (Pacific Daylight Time)
      millis: 946710000001 date: Sat, Jan 01, 2000 AD 12:00:00 AM PDT (Pacific Daylight Time)
      millis: 946710000002 date: Sat, Jan 01, 2000 AD 12:00:00 AM PDT (Pacific Daylight Time)
      millis: 946710000003 date: Sat, Jan 01, 2000 AD 12:00:00 AM PDT (Pacific Daylight Time)
      millis: 946710000004 date: Sat, Jan 01, 2000 AD 12:00:00 AM PDT (Pacific Daylight Time)
      millis: 946710000005 date: Sat, Jan 01, 2000 AD 12:00:00 AM PDT (Pacific Daylight Time)

      Leaving the bug zone...
      millis: 946713599995 date: Sat, Jan 01, 2000 AD 12:59:59 AM PDT (Pacific Daylight Time)
      millis: 946713599996 date: Sat, Jan 01, 2000 AD 12:59:59 AM PDT (Pacific Daylight Time)
      millis: 946713599997 date: Sat, Jan 01, 2000 AD 12:59:59 AM PDT (Pacific Daylight Time)
      millis: 946713599998 date: Sat, Jan 01, 2000 AD 12:59:59 AM PDT (Pacific Daylight Time)
      millis: 946713599999 date: Sat, Jan 01, 2000 AD 12:59:59 AM PDT (Pacific Daylight Time)
      millis: 946713600000 date: Sat, Jan 01, 2000 AD 12:00:00 AM PST (Pacific Standard Time)
      millis: 946713600001 date: Sat, Jan 01, 2000 AD 12:00:00 AM PST (Pacific Standard Time)
      millis: 946713600002 date: Sat, Jan 01, 2000 AD 12:00:00 AM PST (Pacific Standard Time)
      millis: 946713600003 date: Sat, Jan 01, 2000 AD 12:00:00 AM PST (Pacific Standard Time)
      millis: 946713600004 date: Sat, Jan 01, 2000 AD 12:00:00 AM PST (Pacific Standard Time)
      millis: 946713600005 date: Sat, Jan 01, 2000 AD 12:00:00 AM PST (Pacific Standard Time)

      // Demonstrating of bug in which first hour of year 2000 appears to be
      // in daylight savings time, at least for Pacific/Los Angeles time zone
      // in Locale.US.
      //
      // 1.2FCS Solaris 2.6
      //
      // December 16, 1998
      //
      // Tim Dale
      // DAT Services
      // ###@###.###
      // 503-643-4331
      //
      //
       
      import java.util.*;
      import java.text.*;
       
      public class Y2kBug {
       
          public static void dumpMillisRange (SimpleDateFormat formatter,
                                              long startMillis,
                                              long endMillis) {
       
              for (long millis = startMillis; millis <= endMillis; millis++) {
                  System.out.println ("millis: " + millis + " date: " + formatter.format(new Date(millis)) );
              }
          }
       
       
       
          public static void main (String args[]) {
       
              System.out.println ("Y2K DLS Bug");
       
              // create a simple formatter
              SimpleDateFormat formatter = new SimpleDateFormat ("E, MMM dd, yyyy GGG hh:mm:ss a z (zzzz)", Locale.US);
       
              // show beginning of bug
              System.out.println ("");
              System.out.println ("Entering the bug zone...");
              Y2kBug.dumpMillisRange (formatter, 946709999995L, 946710000005L);
       
                                 
              // show end of bug
              System.out.println ("");
              System.out.println ("Leaving the bug zone...");
              Y2kBug.dumpMillisRange (formatter, 946710000000L + (1 * 3600 * 1000) - 5L, 946710000000L + (1 * 3600 * 1000) + 5);
          }

      }
      (Review ID: 48090)
      ======================================================================

            Unassigned Unassigned
            jjb Josh Bloch (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: