import java.time.Instant;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;

public class Main {
	public static void main(String[] args) {
		// Test
		System.out.println(getTimeZoneId("+5:30"));
		System.out.println(getTimeZoneId("-5:00"));
	}

	static List<String> getTimeZoneId(String input) {
		List<String> list = new ArrayList<>();
		// Convert +5:30 to +05:30; similarly, -5:00 to -05:00
		String[] arr = input.split(":");
		if (arr.length == 2) {
			input = arr[0].substring(0, 1) + String.format("%02d", Integer.parseInt(arr[0].replaceAll("\\D", ""))) + ":"
					+ arr[1];

			ZoneOffset offset = ZoneOffset.of(input);
			Instant now = Instant.now();

			list = ZoneId.getAvailableZoneIds()
					.stream()
					.filter(tzId -> ZoneId.of(tzId).getRules().getOffset(now).equals(offset))
					.collect(Collectors.toList());
		}
		return list;
	}
}