fork download
  1. import java.time.Instant;
  2. import java.time.ZoneId;
  3. import java.time.ZoneOffset;
  4. import java.util.ArrayList;
  5. import java.util.List;
  6. import java.util.stream.Collectors;
  7.  
  8. public class Main {
  9. public static void main(String[] args) {
  10. // Test
  11. System.out.println(getTimeZoneId("+5:30"));
  12. System.out.println(getTimeZoneId("-5:00"));
  13. }
  14.  
  15. static List<String> getTimeZoneId(String input) {
  16. List<String> list = new ArrayList<>();
  17. // Convert +5:30 to +05:30; similarly, -5:00 to -05:00
  18. String[] arr = input.split(":");
  19. if (arr.length == 2) {
  20. input = arr[0].substring(0, 1) + String.format("%02d", Integer.parseInt(arr[0].replaceAll("\\D", ""))) + ":"
  21. + arr[1];
  22.  
  23. ZoneOffset offset = ZoneOffset.of(input);
  24. Instant now = Instant.now();
  25.  
  26. list = ZoneId.getAvailableZoneIds()
  27. .stream()
  28. .filter(tzId -> ZoneId.of(tzId).getRules().getOffset(now).equals(offset))
  29. .collect(Collectors.toList());
  30. }
  31. return list;
  32. }
  33. }
Success #stdin #stdout 0.71s 74864KB
stdin
Standard input is empty
stdout
[Asia/Kolkata, Asia/Colombo, Asia/Calcutta]
[America/Panama, America/Chicago, America/Eirunepe, Etc/GMT+5, Mexico/General, America/Porto_Acre, America/Guayaquil, America/Rankin_Inlet, US/Central, America/Rainy_River, America/Indiana/Knox, America/North_Dakota/Beulah, America/Monterrey, America/Jamaica, America/Atikokan, America/Coral_Harbour, America/North_Dakota/Center, America/Cayman, America/Indiana/Tell_City, America/Mexico_City, America/Matamoros, CST6CDT, America/Knox_IN, America/Bogota, America/Menominee, America/Resolute, SystemV/EST5, Canada/Central, Brazil/Acre, America/Cancun, America/Lima, America/Bahia_Banderas, US/Indiana-Starke, America/Rio_Branco, SystemV/CST6CDT, Jamaica, America/Merida, America/North_Dakota/New_Salem, America/Winnipeg]