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

ZonedDateTime - parsing an date time string on a daylight saving boundary

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Duplicate
    • Icon: P4 P4
    • None
    • 8u51
    • core-libs
    • x86
    • windows_8

      FULL PRODUCT VERSION :
      java version "1.8.0_51"
      Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
      Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)

      ADDITIONAL OS VERSION INFORMATION :
      Microsoft Windows [Version 6.3.9600]

      A DESCRIPTION OF THE PROBLEM :
      //parsing the date time string on a daylight saving boundary
      ZonedDateTime dt = ZonedDateTime.parse("2015-10-25T02:00:00+01:00[Europe/Berlin]");
      System.out.println(dt);
      // result in 2015-10-25T02:00+02:00[Europe/Berlin]
      // but ist must be 2015-10-25T02:00+01:00[Europe/Berlin]

      parsing the string '2015-10-25T01:00:00+02:00[Europe/Berlin]' will result a correct value

      ADDITIONAL REGRESSION INFORMATION:
      java version "1.8.0_51"
      Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
      Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      see description

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      2015-10-25T02:00+01:00[Europe/Berlin]
      ACTUAL -
      2015-10-25T02:00+02:00[Europe/Berlin]

      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      @Test
      public void test()
      {
      ZonedDateTime dt = ZonedDateTime.parse("2015-10-25T01:00:00+02:00[Europe/Berlin]");
      dt = dt.plusMinutes(120);
      ZonedDateTime dt2 = ZonedDateTime.parse(dt.format(DateTimeFormatter.ISO_DATE_TIME),
      DateTimeFormatter.ISO_DATE_TIME);
      System.out.println("1: " + dt.format(DateTimeFormatter.ISO_DATE_TIME) + " " + dt.toEpochSecond());
      System.out.println("2: " + dt2.format(DateTimeFormatter.ISO_DATE_TIME) + " " + dt2.toEpochSecond());
      System.out.println();
      dt = dt.plusMinutes(30);
      dt2 = ZonedDateTime.parse(dt.format(DateTimeFormatter.ISO_DATE_TIME), DateTimeFormatter.ISO_DATE_TIME);
      System.out.println("1: " + dt.format(DateTimeFormatter.ISO_DATE_TIME) + " " + dt.toEpochSecond());
      System.out.println("2: " + dt2.format(DateTimeFormatter.ISO_DATE_TIME) + " " + dt2.toEpochSecond());
      System.out.println();
      dt = dt.plusMinutes(30);
      dt2 = ZonedDateTime.parse(dt.format(DateTimeFormatter.ISO_DATE_TIME), DateTimeFormatter.ISO_DATE_TIME);
      System.out.println("1: " + dt.format(DateTimeFormatter.ISO_DATE_TIME) + " " + dt.toEpochSecond());
      System.out.println("2: " + dt2.format(DateTimeFormatter.ISO_DATE_TIME) + " " + dt2.toEpochSecond());
      System.out.println();
      }

      ---------- END SOURCE ----------

            aefimov Aleksej Efimov
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            5 Start watching this issue

              Created:
              Updated:
              Resolved: