-
Bug
-
Resolution: Not an Issue
-
P4
-
None
-
11
ADDITIONAL SYSTEM INFORMATION :
Windows 10 Education Version 20H1 (Build 19042.1083) x64
Intel(R) Core(TM) i5-7300HQ CPU @ 2.50GHz
java version "11.0.11" 2021-04-20 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.11+9-LTS-194)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.11+9-LTS-194, mixed mode)
A DESCRIPTION OF THE PROBLEM :
If I try to convert the LocalDate 2017-03-01 with the ZoneID "Europe/Berlin" into an Instant, I get the result 2017-02-28T23:00:00Z. However, 2017-02-28T23:00:00Z was expected.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Run provided source code.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
2017-03-01T00:00:00Z for example 1.
2020-03-01T00:00:00Z for example 2.
ACTUAL -
2017-02-28T23:00:00Z for example 1.
2020-02-29T23:00:00Z for example 2.
---------- BEGIN SOURCE ----------
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.ZonedDateTime;
public class Test {
private static final ZoneId ZONE_ID_EUROPE_BERLIN = ZoneId.of("Europe/Berlin");
public static void main(final String[] args) {
// No Leap year
final LocalDate date1 = LocalDate.of(2017, 03, 01);
final Instant date1AsInstant = date1.atStartOfDay(ZONE_ID_EUROPE_BERLIN).toInstant();
System.out.println(date1AsInstant.toString()); // Expected 2017-03-01T00:00:00Z but was 2017-02-28T23:00:00Z
final Instant zonedDateTime1 = ZonedDateTime.of(2017, 03, 01, 00, 00, 00, 00, ZONE_ID_EUROPE_BERLIN)
.toInstant();
System.out.println(zonedDateTime1.toString()); // Expected 2017-03-01T00:00:00Z but was 2017-02-28T23:00:00Z
// Leap year
final LocalDate date2 = LocalDate.of(2020, 03, 01);
final Instant date2AsInstant = date2.atStartOfDay(ZONE_ID_EUROPE_BERLIN).toInstant();
System.out.println(date2AsInstant); // Expected 2020-03-01T00:00:00Z but was 2020-02-29T23:00:00Z
final Instant zonedDateTime2 = ZonedDateTime.of(2020, 03, 01, 00, 00, 00, 00, ZONE_ID_EUROPE_BERLIN)
.toInstant();
System.out.println(zonedDateTime2); // Expected 2020-03-01T00:00:00Z but was 2020-02-29T23:00:00Z
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
unknown
FREQUENCY : always
Windows 10 Education Version 20H1 (Build 19042.1083) x64
Intel(R) Core(TM) i5-7300HQ CPU @ 2.50GHz
java version "11.0.11" 2021-04-20 LTS
Java(TM) SE Runtime Environment 18.9 (build 11.0.11+9-LTS-194)
Java HotSpot(TM) 64-Bit Server VM 18.9 (build 11.0.11+9-LTS-194, mixed mode)
A DESCRIPTION OF THE PROBLEM :
If I try to convert the LocalDate 2017-03-01 with the ZoneID "Europe/Berlin" into an Instant, I get the result 2017-02-28T23:00:00Z. However, 2017-02-28T23:00:00Z was expected.
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Run provided source code.
EXPECTED VERSUS ACTUAL BEHAVIOR :
EXPECTED -
2017-03-01T00:00:00Z for example 1.
2020-03-01T00:00:00Z for example 2.
ACTUAL -
2017-02-28T23:00:00Z for example 1.
2020-02-29T23:00:00Z for example 2.
---------- BEGIN SOURCE ----------
import java.time.Instant;
import java.time.LocalDate;
import java.time.ZoneId;
import java.time.ZonedDateTime;
public class Test {
private static final ZoneId ZONE_ID_EUROPE_BERLIN = ZoneId.of("Europe/Berlin");
public static void main(final String[] args) {
// No Leap year
final LocalDate date1 = LocalDate.of(2017, 03, 01);
final Instant date1AsInstant = date1.atStartOfDay(ZONE_ID_EUROPE_BERLIN).toInstant();
System.out.println(date1AsInstant.toString()); // Expected 2017-03-01T00:00:00Z but was 2017-02-28T23:00:00Z
final Instant zonedDateTime1 = ZonedDateTime.of(2017, 03, 01, 00, 00, 00, 00, ZONE_ID_EUROPE_BERLIN)
.toInstant();
System.out.println(zonedDateTime1.toString()); // Expected 2017-03-01T00:00:00Z but was 2017-02-28T23:00:00Z
// Leap year
final LocalDate date2 = LocalDate.of(2020, 03, 01);
final Instant date2AsInstant = date2.atStartOfDay(ZONE_ID_EUROPE_BERLIN).toInstant();
System.out.println(date2AsInstant); // Expected 2020-03-01T00:00:00Z but was 2020-02-29T23:00:00Z
final Instant zonedDateTime2 = ZonedDateTime.of(2020, 03, 01, 00, 00, 00, 00, ZONE_ID_EUROPE_BERLIN)
.toInstant();
System.out.println(zonedDateTime2); // Expected 2020-03-01T00:00:00Z but was 2020-02-29T23:00:00Z
}
}
---------- END SOURCE ----------
CUSTOMER SUBMITTED WORKAROUND :
unknown
FREQUENCY : always