| package org.unicode.cldr.test; |
| |
| import java.io.IOException; |
| import java.text.FieldPosition; |
| import java.util.Date; |
| |
| import com.ibm.icu.text.SimpleDateFormat; |
| import com.ibm.icu.util.BasicTimeZone; |
| import com.ibm.icu.util.Calendar; |
| import com.ibm.icu.util.TimeZone; |
| import com.ibm.icu.util.TimeZoneRule; |
| import com.ibm.icu.util.TimeZoneTransition; |
| |
| /** |
| * Verify that all zones in a metazone have the same behavior within the |
| * specified period. |
| * |
| * |
| */ |
| public class PrintTransitions { |
| |
| public static void main(String[] args) throws IOException { |
| TimeZone.setDefault(TimeZone.getTimeZone("Etc/GMT")); |
| |
| String[] idList = TimeZone.getAvailableIDs(); |
| |
| int i = 0; |
| Date now = new Date(); |
| while (i < idList.length) { |
| |
| BasicTimeZone tz = (BasicTimeZone) TimeZone.getTimeZone(idList[i]); |
| TimeZoneTransition tzt; |
| SimpleDateFormat fmt = new SimpleDateFormat("yyyy-MM-dd HH:mm"); |
| long TransitionTime = 0; |
| tzt = tz.getNextTransition(TransitionTime, true); |
| System.out.println(); |
| System.out.println(idList[i]); |
| System.out.println("---------------------"); |
| int transitionCount = 0; |
| while (tzt != null && (TransitionTime < now.getTime())) { |
| TransitionTime = tzt.getTime(); |
| StringBuffer result = new StringBuffer(); |
| FieldPosition pos = new FieldPosition(0); |
| Calendar cal = fmt.getCalendar(); |
| cal.setTimeInMillis(TransitionTime); |
| fmt.format(cal, result, pos); |
| System.out.print(result.toString()); |
| TimeZoneRule from = tzt.getFrom(); |
| TimeZoneRule to = tzt.getTo(); |
| int fromOffset = (from.getRawOffset() + from.getDSTSavings()) / 3600000; |
| int fromMins = ((from.getRawOffset() + from.getDSTSavings()) % 3600000) / 60000; |
| if (fromMins < 0) |
| fromMins *= -1; |
| int toOffset = (to.getRawOffset() + to.getDSTSavings()) / 3600000; |
| int toMins = ((to.getRawOffset() + to.getDSTSavings()) % 3600000) / 60000; |
| if (toMins < 0) |
| toMins *= -1; |
| System.out.println(" from " + from.getName() + "[GMT" + fromOffset + ":" + fromMins + "] to " |
| + to.getName() + "[GMT" + toOffset + ":" + toMins + "]"); |
| transitionCount++; |
| tzt = tz.getNextTransition(TransitionTime, false); |
| } |
| if (transitionCount == 0) { |
| TimeZoneRule[] rules = tz.getTimeZoneRules(0); |
| TimeZoneRule from = rules[0]; |
| int fromOffset = (from.getRawOffset() + from.getDSTSavings()) / 3600000; |
| int fromMins = ((from.getRawOffset() + from.getDSTSavings()) % 3600000) / 60000; |
| if (fromMins < 0) |
| fromMins *= -1; |
| System.out.println(from.getName() + "[GMT" + fromOffset + ":" + fromMins + "]"); |
| } |
| i++; |
| } |
| } |
| |
| } |