
package com.logicbig.example.zoneoffset;
import java.time.Instant;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.temporal.ChronoField;
import java.time.temporal.TemporalQuery;
import java.util.ArrayList;
import java.util.List;
public class QueryExample2 {
public static void main(String... args) {
ZoneOffset z = ZonedDateTime.now().getOffset();
System.out.println(z);
List<ZoneId> list = z.query(zonesOfSameOffsets);
list.forEach(System.out::println);
}
static TemporalQuery<List<ZoneId>> zonesOfSameOffsets = temporal -> {
List<ZoneId> zones = new ArrayList<>();
if (temporal.isSupported(ChronoField.OFFSET_SECONDS)) {
ZoneOffset z = ZoneOffset.from(temporal);
for (String s : ZoneOffset.getAvailableZoneIds()) {
ZoneId zid = ZoneId.of(s);
ZoneOffset offset = zid.getRules()
.getOffset(Instant.now());
if (z.compareTo(offset)==0) {
zones.add(zid);
}
}
}
return zones;
};
}
Output
+08:00
Asia/Kuching
Asia/Chungking
Etc/GMT-8
Australia/Perth
Asia/Macao
Asia/Macau
Asia/Choibalsan
Asia/Shanghai
Asia/Ulan_Bator
Asia/Chongqing
Asia/Ulaanbaatar
America/Chicago
Asia/Manila
PRC
Asia/Ujung_Pandang
Asia/Harbin
Singapore
Asia/Brunei
Australia/West
Asia/Hong_Kong
Asia/Makassar
Hongkong
Asia/Kuala_Lumpur
Asia/Irkutsk
Asia/Singapore