JDK 11 | JDK 17 | JDK 19 | JDK 20 |
---|---|---|---|
11.0.18Fixed | 17.0.10-oracleFixed | 19.0.2Fixed | 20 b10Fixed |
Duplicate :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
JDK-8288378 :
|
On behalf of Gaurav Chaudhari: When a match cannot be made directly against a recognized region/timezone from the tzdb.dat, TimeZone.getSystemGMTOffsetID() is invoked to find the GMT based offset to calculate the offset and find the corresponding time. The native code reached in TimeZone_md.c has a bug for platforms that are not MacOS, where daylight savings is not respected. To reproduce the issue: TZ="MEZ-1MESZ,M3.5.0,M10.5.0" java -cp . TimeTest with the following test , TimeTest.java import java.util.Calendar; import java.util.TimeZone; import java.util.Date; import java.text.SimpleDateFormat; public class TimeTest { public static void main(String args[]) { Date time = Calendar.getInstance().getTime(); SimpleDateFormat sdf = new SimpleDateFormat("dd.MM.yyyy HH:mm:ss.SSS"); System.out.println("Calendar.getInstance().getTime() = "+time); System.out.println("SimpleDateFormat = "+sdf.format(time)); } } Reproducible on Linux on Z (s390x) OpenJDK18 (jdk18+38 Temurin) TZ="MEZ-1MESZ,M3.5.0,M10.5.0" ~/jdk-18+36/bin/java -cp . TimeTest Calendar.getInstance().getTime() = Thu Apr 28 15:55:16 GMT+01:00 2022 SimpleDateFormat = 28.04.2022 15:55:16.171 Zone ID can be set according to guidelines below: https://www.gnu.org/software/libc/manual/html_node/TZ-Variable.html
|