Timezone shanghaiTz = Timezone.of("Asia/Shanghai");
Timezone nyTz = Timezone.of("America/New_York");
PlainDate date = PlainDate.of(2021, Month.JANUARY, 1);
PlainTime time = PlainTime.of(12, 0);
ZonalDateTime zdtNy = ZonalDateTime.of(date, time, nyTz);
ZonalDateTime zdtShanghai = zdtNy.withTimezone(shanghaiTz);
ZonalTimestamp timestamp = ZonalTimestamp.of(2021, 1, 1, 12, 0, 0, shanghaiTz);
ZonalOffset offset = timestamp.getOffset();
DaylightSavingTime dst = timestamp.getDaylightSavingTime();
ChronoFormatter<ZonalDateTime> formatter = ChronoFormatter.ofPattern("yyyy-MM-dd HH:mm:ss z", PatternType.CLDR, Locale.CHINA)
.withChrono(ZonalDateTime.family())
.withZone(shanghaiTz);
String formatted = formatter.format(zdtShanghai);
ZonalDateTime parsed = formatter.parse("2021-01-01 01:00:00 CST");
<dependency>
<groupId>net.time4j</groupId>
<artifactId>time4j-core</artifactId>
<version>3.15</version>
</dependency>