Да, вы можете сделать это, проверьте это.
final List<ZoneId> timeZoneByUtc = ZoneId.getAvailableZoneIds().stream().map(ZoneId::of)
.filter(z -> z.getRules().getOffset(Instant.now()) == ZoneOffset.ofHours(-5))
.collect(Collectors.toList());
Обновление
Согласно приведенному ниже комментарию, использование оператора ==
НЕ подходит для сравнения объектов, следовательно, это может быть улучшено с помощью метода equals
, как показано ниже.
final List<ZoneId> timeZoneByUtc = ZoneId.getAvailableZoneIds().stream().map(ZoneId::of)
.filter(z -> z.getRules().getOffset(Instant.now()).equals(ZoneOffset.ofHours(-5)))
.collect(Collectors.toList());