ICU-4175 functional (but temporary) display name fallback code, restore test

X-SVN-Rev: 18265
This commit is contained in:
Doug Felt 2005-07-18 00:51:44 +00:00
parent 14ce26c396
commit c157deef23
3 changed files with 492 additions and 297 deletions

View file

@ -450,19 +450,19 @@ public class DateFormatTest extends com.ibm.icu.dev.test.TestFmwk {
}
}
/* not for 3.4 yet
/* not for 3.4 yet */
public void TestGenericTimeZoneDisplayNameFallback() {
Calendar cal = new GregorianCalendar();
long daylightDate = new Date(2005, 7, 1).getTime(); // aug 1
long standardDate = new Date(2005, 0, 1).getTime(); // jan 1
long julyDate = new Date(2004, 6, 15).getTime();
long januaryDate = new Date(2004, 0, 15).getTime();
for (int i = 0; i < fallbackTests.length; ++i) {
String[] info = fallbackTests[i];
ULocale l = new ULocale(info[0]);
TimeZone tz = TimeZone.getTimeZone(info[1]);
long time = (info[2].equals("daylight") == (info[1].indexOf("Australia") == -1))
? daylightDate
: standardDate;
long time = info[2].equals("2004-07-15T00:00:00Z")
? julyDate
: januaryDate;
SimpleDateFormat fmt = new SimpleDateFormat(info[3], l);
cal.setTimeInMillis(time);
cal.setTimeZone(tz);
@ -473,225 +473,290 @@ public class DateFormatTest extends com.ibm.icu.dev.test.TestFmwk {
}
}
}
*/
/**/
private static final String[][] fallbackTests = {
{ "en", "America/Los_Angeles", "daylight", "z", "PDT" },
{ "en", "America/Los_Angeles", "daylight", "zzzz", "Pacific Daylight Time" },
{ "en", "America/Los_Angeles", "standard", "z", "PST" },
{ "en", "America/Los_Angeles", "standard", "zzzz", "Pacific Standard Time" },
{ "en", "America/Los_Angeles", "standard", "v", "PT" },
{ "en", "America/Los_Angeles", "standard", "vvvv", "Pacific Time" },
{ "en", "America/Los_Angeles", "standard", "Z", "-0800" },
{ "en", "America/Los_Angeles", "standard", "ZZZZ", "GMT-07:00" },
{ "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800" },
{ "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00" },
{ "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "PST" },
{ "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "Pacific Standard Time" },
{ "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700" },
{ "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00" },
{ "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "PDT" },
{ "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "Pacific Daylight Time" },
{ "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "PT" },
{ "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "Pacific Time" },
{ "en", "America/Argentina/Buenos_Aires", "daylight", "z", "GMT-03:00" },
{ "en", "America/Argentina/Buenos_Aires", "daylight", "zzzz", "GMT-03:00" },
{ "en", "America/Argentina/Buenos_Aires", "standard", "z", "GMT-03:00" },
{ "en", "America/Argentina/Buenos_Aires", "standard", "zzzz", "GMT-03:00" },
{ "en", "America/Argentina/Buenos_Aires", "standard", "v", "Buenos Aires (Argentina)" },
{ "en", "America/Argentina/Buenos_Aires", "standard", "vvvv", "Buenos Aires (Argentina)" },
{ "en", "America/Argentina/Buenos_Aires", "standard", "Z", "-0300" },
{ "en", "America/Argentina/Buenos_Aires", "standard", "ZZZZ", "GMT-03:00" },
{ "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300" },
{ "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00" },
{ "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00" },
{ "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00" },
{ "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300" },
{ "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00" },
{ "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00" },
{ "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00" },
{ "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Buenos Aires (Argentina)" },
{ "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Buenos Aires (Argentina)" },
{ "en", "America/Buenos_Aires", "daylight", "z", "GMT-03:00" },
{ "en", "America/Buenos_Aires", "daylight", "zzzz", "GMT-03:00" },
{ "en", "America/Buenos_Aires", "standard", "z", "GMT-03:00" },
{ "en", "America/Buenos_Aires", "standard", "zzzz", "GMT-03:00" },
{ "en", "America/Buenos_Aires", "standard", "v", "Buenos Aires (Argentina)" },
{ "en", "America/Buenos_Aires", "standard", "vvvv", "Buenos Aires (Argentina)" },
{ "en", "America/Buenos_Aires", "standard", "Z", "-0300" },
{ "en", "America/Buenos_Aires", "standard", "ZZZZ", "GMT-03:00" },
{ "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300" },
{ "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00" },
{ "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00" },
{ "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00" },
{ "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300" },
{ "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00" },
{ "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00" },
{ "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00" },
{ "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Buenos Aires (Argentina)" },
{ "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Buenos Aires (Argentina)" },
{ "en", "America/Havana", "daylight", "z", "GMT-04:00" },
{ "en", "America/Havana", "daylight", "zzzz", "GMT-04:00" },
{ "en", "America/Havana", "standard", "z", "GMT-05:00" },
{ "en", "America/Havana", "standard", "zzzz", "GMT-05:00" },
{ "en", "America/Havana", "standard", "v", "Cuba" },
{ "en", "America/Havana", "standard", "vvvv", "Cuba" },
{ "en", "America/Havana", "standard", "Z", "-0500" },
{ "en", "America/Havana", "standard", "ZZZZ", "GMT-04:00" },
{ "en", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500" },
{ "en", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00" },
{ "en", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-05:00" },
{ "en", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-05:00" },
{ "en", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400" },
{ "en", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00" },
{ "en", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-04:00" },
{ "en", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-04:00" },
{ "en", "America/Havana", "2004-07-15T00:00:00Z", "v", "Cuba" },
{ "en", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "Cuba" },
{ "en", "Australia/ACT", "daylight", "z", "GMT-11:00" },
{ "en", "Australia/ACT", "daylight", "zzzz", "GMT-11:00" },
{ "en", "Australia/ACT", "standard", "z", "GMT-10:00" },
{ "en", "Australia/ACT", "standard", "zzzz", "GMT-10:00" },
{ "en", "Australia/ACT", "standard", "v", "Sydney (Australia)" },
{ "en", "Australia/ACT", "standard", "vvvv", "Sydney (Australia)" },
{ "en", "Australia/ACT", "standard", "Z", "+1000" },
{ "en", "Australia/ACT", "standard", "ZZZZ", "GMT-11:00" },
{ "en", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100" },
{ "en", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00" },
{ "en", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11:00" },
{ "en", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00" },
{ "en", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000" },
{ "en", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00" },
{ "en", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10:00" },
{ "en", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00" },
{ "en", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "Sydney (Australia)" },
{ "en", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "Sydney (Australia)" },
{ "en", "Australia/Sydney", "daylight", "z", "GMT-11:00" },
{ "en", "Australia/Sydney", "daylight", "zzzz", "GMT-11:00" },
{ "en", "Australia/Sydney", "standard", "z", "GMT-10:00" },
{ "en", "Australia/Sydney", "standard", "zzzz", "GMT-10:00" },
{ "en", "Australia/Sydney", "standard", "v", "Sydney (Australia)" },
{ "en", "Australia/Sydney", "standard", "vvvv", "Sydney (Australia)" },
{ "en", "Australia/Sydney", "standard", "Z", "+1000" },
{ "en", "Australia/Sydney", "standard", "ZZZZ", "GMT-11:00" },
{ "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100" },
{ "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00" },
{ "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11:00" },
{ "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00" },
{ "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000" },
{ "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00" },
{ "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10:00" },
{ "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00" },
{ "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "Sydney (Australia)" },
{ "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "Sydney (Australia)" },
{ "bg", "America/Los_Angeles", "daylight", "z", "PDT" },
{ "bg", "America/Los_Angeles", "daylight", "zzzz", "\u0422\u0438\u0445\u043e\u043e\u043a\u0435\u0430\u043d\u0441\u043a\u0430 \u043b\u044f\u0442\u043d\u0430 \u0447\u0430\u0441\u043e\u0432\u0430 \u0437\u043e\u043d\u0430" },
{ "bg", "America/Los_Angeles", "standard", "z", "PST" },
{ "bg", "America/Los_Angeles", "standard", "zzzz", "\u0422\u0438\u0445\u043e\u043e\u043a\u0435\u0430\u043d\u0441\u043a\u0430 \u0447\u0430\u0441\u043e\u0432\u0430 \u0437\u043e\u043d\u0430" },
{ "bg", "America/Los_Angeles", "standard", "v", "\u041b\u043e\u0441 \u0410\u043d\u0436\u0435\u043b\u0438\u0441 (\u0421\u0410\u0429)" },
{ "bg", "America/Los_Angeles", "standard", "vvvv", "\u041b\u043e\u0441 \u0410\u043d\u0436\u0435\u043b\u0438\u0441 (\u0421\u0410\u0429)" },
{ "bg", "America/Los_Angeles", "standard", "Z", "-0800" },
{ "bg", "America/Los_Angeles", "standard", "ZZZZ", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0700" },
// ==========
{ "bg", "America/Argentina/Buenos_Aires", "daylight", "z", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0300" },
{ "bg", "America/Argentina/Buenos_Aires", "daylight", "zzzz", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0300" },
{ "bg", "America/Argentina/Buenos_Aires", "standard", "z", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0300" },
{ "bg", "America/Argentina/Buenos_Aires", "standard", "zzzz", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0300" },
{ "bg", "America/Argentina/Buenos_Aires", "standard", "v", "\u0411\u0443\u0435\u043d\u043e\u0441 \u0410\u0439\u0440\u0435\u0441 (\u0410\u0440\u0436\u0435\u043d\u0442\u0438\u043d\u0430)" },
{ "bg", "America/Argentina/Buenos_Aires", "standard", "vvvv", "\u0411\u0443\u0435\u043d\u043e\u0441 \u0410\u0439\u0440\u0435\u0441 (\u0410\u0440\u0436\u0435\u043d\u0442\u0438\u043d\u0430)" },
{ "bg", "America/Argentina/Buenos_Aires", "standard", "Z", "-0300" },
{ "bg", "America/Argentina/Buenos_Aires", "standard", "ZZZZ", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0300" },
{ "fr", "America/Havana", "2004-07-15T00:00:00Z", "v", "Cuba" },
{ "fr", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "Cuba" },
{ "fr", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "Sydney (Australie)" },
{ "fr", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "Sydney (Australie)" },
{ "bg", "America/Buenos_Aires", "daylight", "z", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0300" },
{ "bg", "America/Buenos_Aires", "daylight", "zzzz", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0300" },
{ "bg", "America/Buenos_Aires", "standard", "z", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0300" },
{ "bg", "America/Buenos_Aires", "standard", "zzzz", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0300" },
{ "bg", "America/Buenos_Aires", "standard", "v", "\u0411\u0443\u0435\u043d\u043e\u0441 \u0410\u0439\u0440\u0435\u0441 (\u0410\u0440\u0436\u0435\u043d\u0442\u0438\u043d\u0430)" },
{ "bg", "America/Buenos_Aires", "standard", "vvvv", "\u0411\u0443\u0435\u043d\u043e\u0441 \u0410\u0439\u0440\u0435\u0441 (\u0410\u0440\u0436\u0435\u043d\u0442\u0438\u043d\u0430)" },
{ "bg", "America/Buenos_Aires", "standard", "Z", "-0300" },
{ "bg", "America/Buenos_Aires", "standard", "ZZZZ", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0300" },
// ==========
{ "bg", "America/Havana", "daylight", "z", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0400" },
{ "bg", "America/Havana", "daylight", "zzzz", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0400" },
{ "bg", "America/Havana", "standard", "z", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0500" },
{ "bg", "America/Havana", "standard", "zzzz", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0500" },
{ "bg", "America/Havana", "standard", "v", "\u041a\u0443\u0431\u0430" },
{ "bg", "America/Havana", "standard", "vvvv", "\u041a\u0443\u0431\u0430" },
{ "bg", "America/Havana", "standard", "Z", "-0500" },
{ "bg", "America/Havana", "standard", "ZZZZ", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0400" },
{ "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800" },
{ "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0800" },
{ "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "PST" },
{ "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "\u0422\u0438\u0445\u043e\u043e\u043a\u0435\u0430\u043d\u0441\u043a\u0430 \u0447\u0430\u0441\u043e\u0432\u0430 \u0437\u043e\u043d\u0430" },
{ "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700" },
{ "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0700" },
{ "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "PDT" },
{ "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "\u0422\u0438\u0445\u043e\u043e\u043a\u0435\u0430\u043d\u0441\u043a\u0430 \u043b\u044f\u0442\u043d\u0430 \u0447\u0430\u0441\u043e\u0432\u0430 \u0437\u043e\u043d\u0430" },
// bg does have an exemplar city for America/Los_Angeles, so no country code
{ "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "\u041b\u043e\u0441 \u0410\u043d\u0436\u0435\u043b\u0438\u0441" },
{ "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\u041b\u043e\u0441 \u0410\u043d\u0436\u0435\u043b\u0438\u0441" },
{ "bg", "Australia/ACT", "daylight", "z", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-1100" },
{ "bg", "Australia/ACT", "daylight", "zzzz", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-1100" },
{ "bg", "Australia/ACT", "standard", "z", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-1000" },
{ "bg", "Australia/ACT", "standard", "zzzz", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-1000" },
{ "bg", "Australia/ACT", "standard", "v", "\u0421\u0438\u0434\u043d\u0438 (\u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u044f)" },
{ "bg", "Australia/ACT", "standard", "vvvv", "\u0421\u0438\u0434\u043d\u0438 (\u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u044f)" },
{ "bg", "Australia/ACT", "standard", "Z", "+1000" },
{ "bg", "Australia/ACT", "standard", "ZZZZ", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-1100" },
{ "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300" },
{ "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0300" },
{ "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0300" },
{ "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0300" },
{ "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300" },
{ "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0300" },
{ "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0300" },
{ "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0300" },
// exemplar city for buenos aires is draft, so we use fallback with localized country
{ "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Buenos Aires (\u0410\u0440\u0436\u0435\u043d\u0442\u0438\u043d\u0430)" },
{ "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Buenos Aires (\u0410\u0440\u0436\u0435\u043d\u0442\u0438\u043d\u0430)" },
{ "bg", "Australia/Sydney", "daylight", "z", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-1100" },
{ "bg", "Australia/Sydney", "daylight", "zzzz", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-1100" },
{ "bg", "Australia/Sydney", "standard", "z", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-1000" },
{ "bg", "Australia/Sydney", "standard", "zzzz", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-1000" },
{ "bg", "Australia/Sydney", "standard", "v", "\u0421\u0438\u0434\u043d\u0438 (\u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u044f)" },
{ "bg", "Australia/Sydney", "standard", "vvvv", "\u0421\u0438\u0434\u043d\u0438 (\u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u044f)" },
{ "bg", "Australia/Sydney", "standard", "Z", "+1000" },
{ "bg", "Australia/Sydney", "standard", "ZZZZ", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-1100" },
{ "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300" },
{ "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0300" },
{ "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0300" },
{ "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0300" },
{ "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300" },
{ "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0300" },
{ "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0300" },
{ "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0300" },
{ "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Buenos Aires (\u0410\u0440\u0436\u0435\u043d\u0442\u0438\u043d\u0430)" },
{ "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Buenos Aires (\u0410\u0440\u0436\u0435\u043d\u0442\u0438\u043d\u0430)" },
{ "bg", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500" },
{ "bg", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0500" },
{ "bg", "America/Havana", "2004-01-15T00:00:00Z", "z", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0500" },
{ "bg", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0500" },
{ "bg", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400" },
{ "bg", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0400" },
{ "bg", "America/Havana", "2004-07-15T00:00:00Z", "z", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0400" },
{ "bg", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447-0400" },
{ "bg", "America/Havana", "2004-07-15T00:00:00Z", "v", "\u041A\u0443\u0431\u0430" },
{ "bg", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\u041A\u0443\u0431\u0430" },
{ "hi", "America/Los_Angeles", "daylight", "z", "GMT-\u0966\u096d:\u0966\u0966" },
{ "hi", "America/Los_Angeles", "daylight", "zzzz", "GMT-\u0966\u096d:\u0966\u0966" },
{ "hi", "America/Los_Angeles", "standard", "z", "GMT-\u0966\u096e:\u0966\u0966" },
{ "hi", "America/Los_Angeles", "standard", "zzzz", "GMT-\u0966\u096e:\u0966\u0966" },
{ "hi", "America/Los_Angeles", "standard", "v", "Los Angeles (\u0938\u0902\u092f\u0941\u0915\u094d\u0924 \u0930\u093e\u091c\u094d\u092f \u0905\u092e\u0930\u093f\u0915\u093e)" },
{ "hi", "America/Los_Angeles", "standard", "vvvv", "Los Angeles (\u0938\u0902\u092f\u0941\u0915\u094d\u0924 \u0930\u093e\u091c\u094d\u092f \u0905\u092e\u0930\u093f\u0915\u093e)" },
{ "hi", "America/Los_Angeles", "standard", "Z", "-0800" },
{ "hi", "America/Los_Angeles", "standard", "ZZZZ", "GMT-\u0966\u096d:\u0966\u0966" },
{ "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100" },
{ "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447+1100" },
{ "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447+1100" },
{ "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447+1100" },
{ "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000" },
{ "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447+1000" },
{ "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447+1000" },
{ "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447+1000" },
// exemplar city for Australia is draft
{ "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "Sydney (\u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u044f)" },
{ "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "Sydney (\u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u044f)" },
{ "hi", "America/Argentina/Buenos_Aires", "daylight", "z", "GMT-\u0966\u0969:\u0966\u0966" },
{ "hi", "America/Argentina/Buenos_Aires", "daylight", "zzzz", "GMT-\u0966\u0969:\u0966\u0966" },
{ "hi", "America/Argentina/Buenos_Aires", "standard", "z", "GMT-\u0966\u0969:\u0966\u0966" },
{ "hi", "America/Argentina/Buenos_Aires", "standard", "zzzz", "GMT-\u0966\u0969:\u0966\u0966" },
{ "hi", "America/Argentina/Buenos_Aires", "standard", "v", "Buenos Aires (\u0905\u0930\u094d\u091c\u0947\u0928\u094d\u091f\u0940\u0928\u093e)" },
{ "hi", "America/Argentina/Buenos_Aires", "standard", "vvvv", "Buenos Aires (\u0905\u0930\u094d\u091c\u0947\u0928\u094d\u091f\u0940\u0928\u093e)" },
{ "hi", "America/Argentina/Buenos_Aires", "standard", "Z", "-0300" },
{ "hi", "America/Argentina/Buenos_Aires", "standard", "ZZZZ", "GMT-\u0966\u0969:\u0966\u0966" },
{ "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100" },
{ "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447+1100" },
{ "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447+1100" },
{ "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447+1100" },
{ "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000" },
{ "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447+1000" },
{ "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447+1000" },
{ "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447+1000" },
{ "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "Sydney (\u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u044f)" },
{ "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "Sydney (\u0410\u0432\u0441\u0442\u0440\u0430\u043b\u0438\u044f)" },
{ "hi", "America/Buenos_Aires", "daylight", "z", "GMT-\u0966\u0969:\u0966\u0966" },
{ "hi", "America/Buenos_Aires", "daylight", "zzzz", "GMT-\u0966\u0969:\u0966\u0966" },
{ "hi", "America/Buenos_Aires", "standard", "z", "GMT-\u0966\u0969:\u0966\u0966" },
{ "hi", "America/Buenos_Aires", "standard", "zzzz", "GMT-\u0966\u0969:\u0966\u0966" },
{ "hi", "America/Buenos_Aires", "standard", "v", "Buenos Aires (\u0905\u0930\u094d\u091c\u0947\u0928\u094d\u091f\u0940\u0928\u093e)" },
{ "hi", "America/Buenos_Aires", "standard", "vvvv", "Buenos Aires (\u0905\u0930\u094d\u091c\u0947\u0928\u094d\u091f\u0940\u0928\u093e)" },
{ "hi", "America/Buenos_Aires", "standard", "Z", "-0300" },
{ "hi", "America/Buenos_Aires", "standard", "ZZZZ", "GMT-\u0966\u0969:\u0966\u0966" },
// ==========
{ "hi", "America/Havana", "daylight", "z", "GMT-\u0966\u096a:\u0966\u0966" },
{ "hi", "America/Havana", "daylight", "zzzz", "GMT-\u0966\u096a:\u0966\u0966" },
{ "hi", "America/Havana", "standard", "z", "GMT-\u0966\u096b:\u0966\u0966" },
{ "hi", "America/Havana", "standard", "zzzz", "GMT-\u0966\u096b:\u0966\u0966" },
{ "hi", "America/Havana", "standard", "v", "\u0915\u094d\u092f\u0942\u092c\u093e" },
{ "hi", "America/Havana", "standard", "vvvv", "\u0915\u094d\u092f\u0942\u092c\u093e" },
{ "hi", "America/Havana", "standard", "Z", "-0500" },
{ "hi", "America/Havana", "standard", "ZZZZ", "GMT-\u0966\u096a:\u0966\u0966" },
{ "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800" },
{ "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u096e:\u0966\u0966" },
{ "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-\u0966\u096e:\u0966\u0966" },
{ "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "GMT-\u0966\u096e:\u0966\u0966" },
{ "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700" },
{ "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u096d:\u0966\u0966" },
{ "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-\u0966\u096d:\u0966\u0966" },
{ "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "GMT-\u0966\u096d:\u0966\u0966" },
{ "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "Los Angeles (\u0938\u0902\u092f\u0941\u0915\u094d\u0924 \u0930\u093e\u091c\u094d\u092f \u0905\u092e\u0930\u093f\u0915\u093e)" },
{ "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "Los Angeles (\u0938\u0902\u092f\u0941\u0915\u094d\u0924 \u0930\u093e\u091c\u094d\u092f \u0905\u092e\u0930\u093f\u0915\u093e)" },
{ "hi", "Australia/ACT", "daylight", "z", "GMT-\u0967\u0967:\u0966\u0966" },
{ "hi", "Australia/ACT", "daylight", "zzzz", "GMT-\u0967\u0967:\u0966\u0966" },
{ "hi", "Australia/ACT", "standard", "z", "GMT-\u0967\u0966:\u0966\u0966" },
{ "hi", "Australia/ACT", "standard", "zzzz", "GMT-\u0967\u0966:\u0966\u0966" },
{ "hi", "Australia/ACT", "standard", "v", "Sydney (\u0911\u0938\u094d\u091f\u094d\u0930\u0947\u0932\u093f\u092f\u093e)" },
{ "hi", "Australia/ACT", "standard", "vvvv", "Sydney (\u0911\u0938\u094d\u091f\u094d\u0930\u0947\u0932\u093f\u092f\u093e)" },
{ "hi", "Australia/ACT", "standard", "Z", "+1000" },
{ "hi", "Australia/ACT", "standard", "ZZZZ", "GMT-\u0967\u0967:\u0966\u0966" },
{ "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300" },
{ "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u0969:\u0966\u0966" },
{ "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-\u0966\u0969:\u0966\u0966" },
{ "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-\u0966\u0969:\u0966\u0966" },
{ "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300" },
{ "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u0969:\u0966\u0966" },
{ "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-\u0966\u0969:\u0966\u0966" },
{ "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-\u0966\u0969:\u0966\u0966" },
{ "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Buenos Aires (\u0905\u0930\u094d\u091c\u0947\u0928\u094d\u091f\u0940\u0928\u093e)" },
{ "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Buenos Aires (\u0905\u0930\u094d\u091c\u0947\u0928\u094d\u091f\u0940\u0928\u093e)" },
{ "hi", "Australia/Sydney", "daylight", "z", "GMT-\u0967\u0967:\u0966\u0966" },
{ "hi", "Australia/Sydney", "daylight", "zzzz", "GMT-\u0967\u0967:\u0966\u0966" },
{ "hi", "Australia/Sydney", "standard", "z", "GMT-\u0967\u0966:\u0966\u0966" },
{ "hi", "Australia/Sydney", "standard", "zzzz", "GMT-\u0967\u0966:\u0966\u0966" },
{ "hi", "Australia/Sydney", "standard", "v", "Sydney (\u0911\u0938\u094d\u091f\u094d\u0930\u0947\u0932\u093f\u092f\u093e)" },
{ "hi", "Australia/Sydney", "standard", "vvvv", "Sydney (\u0911\u0938\u094d\u091f\u094d\u0930\u0947\u0932\u093f\u092f\u093e)" },
{ "hi", "Australia/Sydney", "standard", "Z", "+1000" },
{ "hi", "Australia/Sydney", "standard", "ZZZZ", "GMT-\u0967\u0967:\u0966\u0966" },
{ "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300" },
{ "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u0969:\u0966\u0966" },
{ "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-\u0966\u0969:\u0966\u0966" },
{ "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-\u0966\u0969:\u0966\u0966" },
{ "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300" },
{ "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u0969:\u0966\u0966" },
{ "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-\u0966\u0969:\u0966\u0966" },
{ "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-\u0966\u0969:\u0966\u0966" },
{ "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Buenos Aires (\u0905\u0930\u094d\u091c\u0947\u0928\u094d\u091f\u0940\u0928\u093e)" },
{ "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Buenos Aires (\u0905\u0930\u094d\u091c\u0947\u0928\u094d\u091f\u0940\u0928\u093e)" },
{ "as", "America/Los_Angeles", "daylight", "z", "GMT-07:00" },
{ "as", "America/Los_Angeles", "daylight", "zzzz", "GMT-07:00" },
{ "as", "America/Los_Angeles", "standard", "z", "GMT-08:00" },
{ "as", "America/Los_Angeles", "standard", "zzzz", "GMT-08:00" },
{ "as", "America/Los_Angeles", "standard", "v", "Los Angeles (US)" },
{ "as", "America/Los_Angeles", "standard", "vvvv", "Los Angeles (US)" },
{ "as", "America/Los_Angeles", "standard", "Z", "-0800" },
{ "as", "America/Los_Angeles", "standard", "ZZZZ", "GMT-07:00" },
{ "hi", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500" },
{ "hi", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u096b:\u0966\u0966" },
{ "hi", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-\u0966\u096b:\u0966\u0966" },
{ "hi", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-\u0966\u096b:\u0966\u0966" },
{ "hi", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400" },
{ "hi", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\u0966\u096a:\u0966\u0966" },
{ "hi", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-\u0966\u096a:\u0966\u0966" },
{ "hi", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-\u0966\u096a:\u0966\u0966" },
{ "hi", "America/Havana", "2004-07-15T00:00:00Z", "v", "\u0915\u094d\u092f\u0942\u092c\u093e" },
{ "hi", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\u0915\u094d\u092f\u0942\u092c\u093e" },
{ "as", "America/Argentina/Buenos_Aires", "daylight", "z", "GMT-03:00" },
{ "as", "America/Argentina/Buenos_Aires", "daylight", "zzzz", "GMT-03:00" },
{ "as", "America/Argentina/Buenos_Aires", "standard", "z", "GMT-03:00" },
{ "as", "America/Argentina/Buenos_Aires", "standard", "zzzz", "GMT-03:00" },
{ "as", "America/Argentina/Buenos_Aires", "standard", "v", "Buenos Aires (AR)" },
{ "as", "America/Argentina/Buenos_Aires", "standard", "vvvv", "Buenos Aires (AR)" },
{ "as", "America/Argentina/Buenos_Aires", "standard", "Z", "-0300" },
{ "as", "America/Argentina/Buenos_Aires", "standard", "ZZZZ", "GMT-03:00" },
{ "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100" },
{ "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+\u0967\u0967:\u0966\u0966" },
{ "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+\u0967\u0967:\u0966\u0966" },
{ "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "GMT+\u0967\u0967:\u0966\u0966" },
{ "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000" },
{ "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+\u0967\u0966:\u0966\u0966" },
{ "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+\u0967\u0966:\u0966\u0966" },
{ "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "GMT+\u0967\u0966:\u0966\u0966" },
{ "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "Sydney (\u0911\u0938\u094d\u091f\u094d\u0930\u0947\u0932\u093f\u092f\u093e)" },
{ "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "Sydney (\u0911\u0938\u094d\u091f\u094d\u0930\u0947\u0932\u093f\u092f\u093e)" },
{ "as", "America/Buenos_Aires", "daylight", "z", "GMT-03:00" },
{ "as", "America/Buenos_Aires", "daylight", "zzzz", "GMT-03:00" },
{ "as", "America/Buenos_Aires", "standard", "z", "GMT-03:00" },
{ "as", "America/Buenos_Aires", "standard", "zzzz", "GMT-03:00" },
{ "as", "America/Buenos_Aires", "standard", "v", "Buenos Aires (AR)" },
{ "as", "America/Buenos_Aires", "standard", "vvvv", "Buenos Aires (AR)" },
{ "as", "America/Buenos_Aires", "standard", "Z", "-0300" },
{ "as", "America/Buenos_Aires", "standard", "ZZZZ", "GMT-03:00" },
{ "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100" },
{ "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+\u0967\u0967:\u0966\u0966" },
{ "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+\u0967\u0967:\u0966\u0966" },
{ "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "GMT+\u0967\u0967:\u0966\u0966" },
{ "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000" },
{ "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+\u0967\u0966:\u0966\u0966" },
{ "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+\u0967\u0966:\u0966\u0966" },
{ "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "GMT+\u0967\u0966:\u0966\u0966" },
{ "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "Sydney (\u0911\u0938\u094d\u091f\u094d\u0930\u0947\u0932\u093f\u092f\u093e)" },
{ "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "Sydney (\u0911\u0938\u094d\u091f\u094d\u0930\u0947\u0932\u093f\u092f\u093e)" },
{ "as", "America/Havana", "daylight", "z", "GMT-04:00" },
{ "as", "America/Havana", "daylight", "zzzz", "GMT-04:00" },
{ "as", "America/Havana", "standard", "z", "GMT-05:00" },
{ "as", "America/Havana", "standard", "zzzz", "GMT-05:00" },
{ "as", "America/Havana", "standard", "v", "CU" },
{ "as", "America/Havana", "standard", "vvvv", "CU" },
{ "as", "America/Havana", "standard", "Z", "-0500" },
{ "as", "America/Havana", "standard", "ZZZZ", "GMT-04:00" },
// ==========
{ "as", "Australia/ACT", "daylight", "z", "GMT-11:00" },
{ "as", "Australia/ACT", "daylight", "zzzz", "GMT-11:00" },
{ "as", "Australia/ACT", "standard", "z", "GMT-10:00" },
{ "as", "Australia/ACT", "standard", "zzzz", "GMT-10:00" },
{ "as", "Australia/ACT", "standard", "v", "Sydney (AU)" },
{ "as", "Australia/ACT", "standard", "vvvv", "Sydney (AU)" },
{ "as", "Australia/ACT", "standard", "Z", "+1000" },
{ "as", "Australia/ACT", "standard", "ZZZZ", "GMT-11:00" },
{ "as", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800" },
{ "as", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00" },
{ "as", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-08:00" },
{ "as", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "GMT-08:00" },
{ "as", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700" },
{ "as", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00" },
{ "as", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-07:00" },
{ "as", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "GMT-07:00" },
{ "as", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "Los Angeles (US)" },
{ "as", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "Los Angeles (US)" },
{ "as", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300" },
{ "as", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00" },
{ "as", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00" },
{ "as", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00" },
{ "as", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300" },
{ "as", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00" },
{ "as", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00" },
{ "as", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00" },
{ "as", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Buenos Aires (AR)" },
{ "as", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Buenos Aires (AR)" },
{ "as", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300" },
{ "as", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00" },
{ "as", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00" },
{ "as", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00" },
{ "as", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300" },
{ "as", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00" },
{ "as", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00" },
{ "as", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00" },
{ "as", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Buenos Aires (AR)" },
{ "as", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Buenos Aires (AR)" },
{ "as", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500" },
{ "as", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00" },
{ "as", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-05:00" },
{ "as", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-05:00" },
{ "as", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400" },
{ "as", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00" },
{ "as", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-04:00" },
{ "as", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-04:00" },
// modified pending resolution of rule 5 question
{ "as", "America/Havana", "2004-07-15T00:00:00Z", "v", "Havana (CU)" },
{ "as", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "Havana (CU)" },
{ "as", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100" },
{ "as", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00" },
{ "as", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11:00" },
{ "as", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00" },
{ "as", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000" },
{ "as", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00" },
{ "as", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10:00" },
{ "as", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00" },
{ "as", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "Sydney (AU)" },
{ "as", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "Sydney (AU)" },
{ "as", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100" },
{ "as", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00" },
{ "as", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11:00" },
{ "as", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00" },
{ "as", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000" },
{ "as", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00" },
{ "as", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10:00" },
{ "as", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00" },
{ "as", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "Sydney (AU)" },
{ "as", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "Sydney (AU)" },
{ "as", "Australia/Sydney", "daylight", "z", "GMT-11:00" },
{ "as", "Australia/Sydney", "daylight", "zzzz", "GMT-11:00" },
{ "as", "Australia/Sydney", "standard", "z", "GMT-10:00" },
{ "as", "Australia/Sydney", "standard", "zzzz", "GMT-10:00" },
{ "as", "Australia/Sydney", "standard", "v", "Sydney (AU)" },
{ "as", "Australia/Sydney", "standard", "vvvv", "Sydney (AU)" },
{ "as", "Australia/Sydney", "standard", "Z", "+1000" },
{ "as", "Australia/Sydney", "standard", "ZZZZ", "GMT-11:00" },
};
/**

View file

@ -19,6 +19,9 @@ import java.util.Set;
import java.util.TreeMap;
import java.util.TreeSet;
import com.ibm.icu.text.MessageFormat;
import com.ibm.icu.text.SimpleDateFormat;
import com.ibm.icu.util.TimeZone;
import com.ibm.icu.util.ULocale;
import com.ibm.icu.util.UResourceBundle;
@ -168,6 +171,45 @@ public final class ZoneMeta {
}
}
// translation of appendix j
// A) "Canonicalize the olson ID"
// --> map the passed-in id to an olson id.
// A.1) if there is no such id, goto C (GMT)
//
// B) "If there is an exact translation in the resolved locale, use it"
// --> get the zone info data for this locale. check to see if it came from a
// fallback of this locale (and didn't go up the defaultLocale chain). (note: record this as 'IS_VALID')
// B.1) if it did, check to see that the requested form is available (long/short, generic/standard/daylight)
// B.1.a) if it is, return it.
//
// C) "For non-wall-time, use GMT format"
// --> if not generic, look up GMT format, translation, and hours, format the offset value, and return.
//
// D) "If there is an exemplar city, use the region format"
// --> look up the exemplar city, and if found, look up region format, format the city, and return.
//
// E) "If there is a country for the time zone..."
// --> the time zone is not associated with 'no country' (note: record this as 'COUNTRY_CODE')
// "and a translation in the locale for the country name..."
// --> if IS_VALID (see B) and there is a translation for the country (note: record this as 'COUNTRY')
// "and the country has one modern time zone or is in the singleCountries list..."
// --> if the info is marked true for this time zone
// "use it with the region format"
// --> look up the region format, format the country, and return.
//
// F) "If it is a perpetual alias..."
// --> no idea what this means, so skip
//
// G) "Fall back to the raw Olson ID, using the fallback format
// --> convert the tail of the time zone id to a city string as described (note: record this as 'CITY')
// G.1 if (COUNTRY is null) set COUNTRY to COUNTRY_CODE
// G.2 else format the city and country using the fallback format, and return.
//
// H) "Else use the (possibly multi-offset) GMT format
// --> else no country? but we've fallen back to the raw olson id... how do we reach this point?
// --> also, it sounds like i'd need to examine the GMT format string to see if it is multi-offset or not
private static String[] getCanonicalInfo(String id) {
if (canonicalMap == null) {
Map m = new HashMap();
@ -190,14 +232,14 @@ public final class ZoneMeta {
/**
* Return the canonical id for this tzid, which might be the id itself.
* If there is no canonical id for it, return null.
* If there is no canonical id for it, return the passed-in id.
*/
public static String getCanonicalID(String tzid) {
String[] info = getCanonicalInfo(tzid);
if (info != null) {
return info[0];
}
return null;
return tzid;
}
/**
@ -227,58 +269,136 @@ public final class ZoneMeta {
}
/**
* Given a country code, return the display name in the provided locale, or null if
* there is no localization for the country code.
* Handle fallbacks for generic time (rules E.. G)
*/
public static String getCountryDisplayNameForCode(String cc, ULocale locale) {
ICUResourceBundle rb =
(ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale);
ICUResourceBundle countries = rb.get("Countries");
ICUResourceBundle country = countries.get(cc);
String displayName = country.getString();
public static String displayFallback(String tzid, ULocale locale) {
String[] info = getCanonicalInfo(tzid);
if (info == null) {
return null; // error
}
return displayName;
}
String country_code = info[1];
String country = null;
if (country_code != null) {
ICUResourceBundle rb =
(ICUResourceBundle)UResourceBundle.getBundleInstance(ICUResourceBundle.ICU_BASE_NAME, locale);
String rblocname = rb.getULocale().getBaseName();
if (LocaleUtility.isFallbackOf(rblocname, locale.getBaseName())) {
// dlf: need a utility on ULocale for this
// only valid data, don't fallback through default
ICUResourceBundle csb = rb.get("Countries");
ICUResourceBundle cb = csb.get(country_code);
country = cb.getString();
}
}
/**
* Looks up the country code from the time zone id, then looks up the display
* name for the country code, and defaults to the country code if the display
* name is not available. If there's no country code at all, return null.
*/
public static String getCountryDisplayNameForID(String tzid, ULocale locale) {
String cc = getCanonicalCountry(tzid);
if (cc != null) {
String displayName = getCountryDisplayNameForCode(cc, locale);
if (displayName != null) {
cc = displayName;
if (country != null && info[2] != null) { // single country
return displayRegion(country, locale);
}
String city = tzid.substring(tzid.lastIndexOf('/')+1);
int n;
if ((n = city.indexOf('_')) != -1) {
char[] chars = city.toCharArray();
for (; n < chars.length; ++n) {
if (chars[n] == '_') {
chars[n] = ' ';
}
}
city = new String(chars);
}
if (country == null) {
country = country_code;
}
String flbPat = getTZLocalizationInfo(locale, FALLBACK_FORMAT);
MessageFormat mf = new MessageFormat(flbPat);
return mf.format(new Object[] { city, country });
}
public static String displayRegion(String cityOrCountry, ULocale locale) {
String regPat = getTZLocalizationInfo(locale, REGION_FORMAT);
MessageFormat mf = new MessageFormat(regPat);
return mf.format(new Object[] { cityOrCountry });
}
public static String displayGMT(long value, ULocale locale) {
String msgpat = getTZLocalizationInfo(locale, GMT);
String dtepat = getTZLocalizationInfo(locale, HOUR);
int n = dtepat.indexOf(';');
if (n != -1) {
if (value < 0) {
value = - value;
dtepat = dtepat.substring(n+1);
} else {
dtepat = dtepat.substring(0, n);
}
}
return cc;
final long mph = 3600000;
final long mpm = 60000;
SimpleDateFormat sdf = new SimpleDateFormat(dtepat, locale);
sdf.setTimeZone(TimeZone.getTimeZone("GMT"));
String res = sdf.format(new Long(value));
MessageFormat mf = new MessageFormat(msgpat);
res = mf.format(new Object[] { res });
return res;
}
public static final int
PREFIX = 0,
HOUR = 1,
GMT = 2,
REGION_FORMAT = 3,
FALLBACK_FORMAT = 4;
/**
* If we meet the criteria of tr35 appendix j rule 5, return the display name, otherwise
* return null.
* Get the index'd tz datum for this locale. Index must be one of the
* values PREFIX, HOUR, GMT, REGION_FORMAT, FALLBACK_FORMAT
*/
public static String getSingleCountryDisplayName(String tzid, ULocale locale) {
// tr 35 appendix j rule 5 interpreted:
// if
// the canonical time zone id is associated with a non-empty country code string, and
// the locale data has a translation for this country code, and
// either
// the country code has only one locale id associated with it, or
// the time zone id is in the single countries list
// then
// return the translation of the country code
String cc = getSingleCountry(tzid);
if (cc != null) {
return getCountryDisplayNameForCode(cc, locale);
public static String getTZLocalizationInfo(ULocale locale, int index) {
String baseName = locale.getBaseName();
for (int i = 0; i < TZ_LOCALIZATION_INFO.length; ++i) {
String[] info = TZ_LOCALIZATION_INFO[i];
String prefix = info[PREFIX];
if (prefix == null
|| (index < info.length
&& info[index] != null
&& baseName.indexOf(prefix) == 0)) {
return info[index];
}
}
return null;
throw new InternalError(); // should never get here
}
// temporary for icu4j 3.4
// locale, hour, gmt, region, fallback
private static final String[][] TZ_LOCALIZATION_INFO = {
{ "am", "+HHmm;-HHmm" },
{ "bg", "+HHmm;-HHmm", "\u0413\u0440\u0438\u0438\u043d\u0443\u0438\u0447{0}" },
{ "cy", "+HHmm;-HHmm" },
{ "el", "+HHmm;-HHmm" },
{ "hr", "+HHmm;-HHmm" },
{ "ja", "+HHmm;-HHmm", null, "{0}\u6642\u9593", "{0} ({1})\u00e6\u2122\u201a\u00e9\u2013\u201c" },
{ "nn", "+HH.mm;-HH.mm" },
{ "sk", "+HHmm;-HHmm" },
{ "sl", "+HHmm;-HHmm" },
{ "sr", "+HHmm;-HHmm" },
{ "sv", "+HH.mm;-HH.mm", "GMT" },
{ "th", "+HHmm;-HHmm" },
{ "uk", "+HHmm;-HHmm" },
{ "zh_Hant", "+HH:mm;-HH:mm" },
{ "zh", "+HHmm;-HHmm" },
{ null, "+HH:mm;-HH:mm", "GMT{0}", "{0}", "{0} ({1})" }
};
private static Set getValidIDs() {
// Construct list of time zones that are valid, according
// to the current underlying core JDK. We have to do this

View file

@ -247,6 +247,7 @@ public class SimpleDateFormat extends DateFormat {
*/
private DateFormatSymbols formatData;
private transient ULocale locale;
private transient boolean formatDataIsValid;
/**
@ -458,6 +459,9 @@ public class SimpleDateFormat extends DateFormat {
/* Initialize calendar and numberFormat fields */
private void initialize(ULocale loc) {
// time zone formatting
locale = loc;
// The format object must be constructed using the symbols for this zone.
// However, the calendar should use the current default TimeZone.
// If this is not contained in the locale zone strings, then the zone
@ -809,52 +813,73 @@ public class SimpleDateFormat extends DateFormat {
zeroPaddingNumber(buf, value, count, maxIntCount);
break;
case 17: // 'z' - ZONE_OFFSET
case 24: // 'v' - TIMEZONE_GENERIC
String tzid = cal.getTimeZone().getID();
case 24: // 'v' - TIMEZONE_GENERIC
{
String res = null;
boolean isGeneric = patternCharIndex == 24;
String tzid = ZoneMeta.getCanonicalID(cal.getTimeZone().getID());
String[] zs = null;
if (tzid !=null && formatDataIsValid) {
int zoneIndex = formatData.getZoneIndex(tzid);
if (zoneIndex != -1) {
zs = formatData.zoneStrings[zoneIndex];
}
}
if (zs != null) {
if (isGeneric) {
if (zs.length >= 7) { // have generic strings
int ix = count < 4 ? 6 : 5;
if (zs.length > 7) {
ix += 1;
}
res = zs[ix];
} else if (zs.length == 6) { // have city string
res = ZoneMeta.displayRegion(zs[5], locale);
}
} else {
int ix = count < 4 ? 2 : 1;
if (cal.get(Calendar.DST_OFFSET) != 0) {
ix += 2;
}
res = zs[ix];
}
}
if (res == null) {
if (tzid == null || !isGeneric) {
long offset = cal.get(Calendar.ZONE_OFFSET) +
cal.get(Calendar.DST_OFFSET);
res = ZoneMeta.displayGMT(offset, locale);
} else {
res = ZoneMeta.displayFallback(tzid, locale);
}
}
buf.append(res);
/*
int zoneIndex = -1;
if (patternCharIndex == 17 || formatDataIsValid) {
zoneIndex = formatData.getZoneIndex(tzid);
}
if (zoneIndex == -1) {
if (formatDataIsValid && patternCharIndex == 24) { // 'v'
if (patternCharIndex == 24) { // 'v'
// no format data, see if we have an Olson ID
String ntzid = ZoneMeta.getCanonicalID(tzid);
if (ntzid != null) {
String res = ntzid.substring(ntzid.lastIndexOf('/')+1);
for (int ix = -1;;) {
ix = res.indexOf('_', ix+1);
if (ix < 0) {
break;
}
res = res.substring(0, ix) + " " + res.substring(ix+1);
}
buf.append(res);
// now get country code. first get the code...
String displayCountry = ZoneMeta.getCountryDisplayNameForID
(tzid, formatData.getLocale(ULocale.VALID_LOCALE));
if (displayCountry != null) {
buf.append(" (" + displayCountry + ")");
}
buf.append(ZoneMeta.displayFallback(ntzid, formatDataIsValid, locale));
break; // early return
}
}
// For time zones that have no names, use strings
// GMT+hours:minutes and GMT-hours:minutes.
// For instance, France time zone uses GMT+01:00.
// long form, localized GMT pattern
value = cal.get(Calendar.ZONE_OFFSET) +
cal.get(Calendar.DST_OFFSET);
if (value < 0) {
buf.append(GMT_MINUS);
value = -value; // suppress the '-' sign for text display.
} else {
buf.append(GMT_PLUS);
}
zeroPaddingNumber(buf, (int)(value/millisPerHour), 2, 2);
buf.append(':');
zeroPaddingNumber(buf, (int)((value%millisPerHour)/millisPerMinute), 2, 2);
buf.append(ZoneMeta.displayGMT(tzid, value, locale));
} else {
String[] zs = formatData.zoneStrings[zoneIndex];
@ -867,22 +892,13 @@ public class SimpleDateFormat extends DateFormat {
}
res = zs[ix];
} else if (zs.length == 6) { // have city string
res = zs[5];
res = ZoneMeta.displayRegion(zs[5], locale);
} else {
ULocale locale = formatData.getLocale(ULocale.VALID_LOCALE);
String cc = ZoneMeta.getSingleCountryDisplayName(tzid, locale);
if (cc != null) { // have single country string
res = cc;
res = ZoneMeta.displayRegion(cc, locale);
} else { // use tail
res = res.substring(res.lastIndexOf('/')+1);
for (int ix = -1;;) {
ix = res.indexOf('_', ix+1);
if (ix < 0) {
break;
}
res = res.substring(0, ix) + " " + res.substring(ix+1);
}
res += " (" + ZoneMeta.getCountryDisplayNameForID(tzid, locale) + ")";
res = ZoneMeta.displayFallback(tzid, true, locale);
}
}
} else {
@ -893,11 +909,14 @@ public class SimpleDateFormat extends DateFormat {
res = zs[ix];
}
buf.append(res);
}
break;
}
*/
} break;
case 23: // 'Z' - TIMEZONE_RFC
{
if (count < 5) {
if (count < 4) {
// 'short' (standard Java) form, must use ASCII digits
char sign = '+';
value = (cal.get(Calendar.ZONE_OFFSET) +
@ -909,21 +928,12 @@ public class SimpleDateFormat extends DateFormat {
value = (value / 3) * 5 + (value % 60); // minutes => KKmm
buf.append(sign);
buf.append(new DecimalFormat("0000").format(value));
} else { // dlf use 5 since existing tests use 4
} else {
// long form, localized GMT pattern
// not in 3.4 locale data, need to add, so use same default as for general time zone names
value = cal.get(Calendar.ZONE_OFFSET) +
cal.get(Calendar.DST_OFFSET);
if (value < 0) {
buf.append(GMT_MINUS);
value = -value; // suppress the '-' sign for text display.
} else {
buf.append(GMT_PLUS);
}
zeroPaddingNumber(buf, (int)(value/millisPerHour), 2, 2);
buf.append(':');
zeroPaddingNumber(buf, (int)((value%millisPerHour)/millisPerMinute), 2, 2);
buf.append(ZoneMeta.displayGMT(value, locale));
}
}
break;