Multimap<Integer, DateTimeZone> timeZones = LinkedHashMultimap.create();
// figure out a set of timezones with unique offsets
for (Object obj : DateTimeZone.getAvailableIDs()) {
String id = (String) obj;
DateTimeZone dateTimeZone = DateTimeZone.forID(id);
TimeZone timeZone = dateTimeZone.toTimeZone();
timeZones.put(timeZone.getRawOffset(), dateTimeZone);
timeZones.put(timeZone.getRawOffset() + timeZone.getDSTSavings(), dateTimeZone);
}
Set<DateTimeZone> distinctZones = new HashSet<DateTimeZone>();
for (Map.Entry<Integer, Collection<DateTimeZone>> entry : timeZones.asMap().entrySet()) {