OLD | NEW |
(Empty) | |
| 1 /******************************************************************** |
| 2 * COPYRIGHT: |
| 3 * Copyright (c) 1997-2010, International Business Machines |
| 4 * Corporation and others. All Rights Reserved. |
| 5 ********************************************************************/ |
| 6 |
| 7 #include "unicode/utypes.h" |
| 8 |
| 9 #if !UCONFIG_NO_FORMATTING |
| 10 |
| 11 #include "dtfmttst.h" |
| 12 #include "unicode/timezone.h" |
| 13 #include "unicode/gregocal.h" |
| 14 #include "unicode/smpdtfmt.h" |
| 15 #include "unicode/datefmt.h" |
| 16 #include "unicode/simpletz.h" |
| 17 #include "unicode/strenum.h" |
| 18 #include "unicode/dtfmtsym.h" |
| 19 #include "cmemory.h" |
| 20 #include "cstring.h" |
| 21 #include "caltest.h" // for fieldName |
| 22 #include <stdio.h> // for sprintf |
| 23 |
| 24 #ifdef U_WINDOWS |
| 25 #include "windttst.h" |
| 26 #endif |
| 27 |
| 28 #define ARRAY_SIZE(array) (sizeof array / sizeof array[0]) |
| 29 |
| 30 #define ASSERT_OK(status) if(U_FAILURE(status)) {errcheckln(status, #status " =
%s @ %s:%d", u_errorName(status), __FILE__, __LINE__); return; } |
| 31 |
| 32 // ***************************************************************************** |
| 33 // class DateFormatTest |
| 34 // ***************************************************************************** |
| 35 |
| 36 void DateFormatTest::runIndexedTest( int32_t index, UBool exec, const char* &nam
e, char* /*par*/ ) |
| 37 { |
| 38 // if (exec) logln((UnicodeString)"TestSuite DateFormatTest"); |
| 39 switch (index) { |
| 40 TESTCASE(0,TestEquals); |
| 41 TESTCASE(1,TestTwoDigitYearDSTParse); |
| 42 TESTCASE(2,TestFieldPosition); |
| 43 TESTCASE(3,TestPartialParse994); |
| 44 TESTCASE(4,TestRunTogetherPattern985); |
| 45 TESTCASE(5,TestRunTogetherPattern917); |
| 46 TESTCASE(6,TestCzechMonths459); |
| 47 TESTCASE(7,TestLetterDPattern212); |
| 48 TESTCASE(8,TestDayOfYearPattern195); |
| 49 TESTCASE(9,TestQuotePattern161); |
| 50 TESTCASE(10,TestBadInput135); |
| 51 TESTCASE(11,TestBadInput135a); |
| 52 TESTCASE(12,TestTwoDigitYear); |
| 53 TESTCASE(13,TestDateFormatZone061); |
| 54 TESTCASE(14,TestDateFormatZone146); |
| 55 TESTCASE(15,TestLocaleDateFormat); |
| 56 TESTCASE(16,TestWallyWedel); |
| 57 TESTCASE(17,TestDateFormatCalendar); |
| 58 TESTCASE(18,TestSpaceParsing); |
| 59 TESTCASE(19,TestExactCountFormat); |
| 60 TESTCASE(20,TestWhiteSpaceParsing); |
| 61 TESTCASE(21,TestInvalidPattern); |
| 62 TESTCASE(22,TestGeneral); |
| 63 TESTCASE(23,TestGreekMay); |
| 64 TESTCASE(24,TestGenericTime); |
| 65 TESTCASE(25,TestGenericTimeZoneOrder); |
| 66 TESTCASE(26,TestHost); |
| 67 TESTCASE(27,TestEras); |
| 68 TESTCASE(28,TestNarrowNames); |
| 69 TESTCASE(29,TestStandAloneDays); |
| 70 TESTCASE(30,TestStandAloneMonths); |
| 71 TESTCASE(31,TestQuarters); |
| 72 TESTCASE(32,TestZTimeZoneParsing); |
| 73 TESTCASE(33,TestRelative); |
| 74 TESTCASE(34,TestRelativeClone); |
| 75 TESTCASE(35,TestHostClone); |
| 76 TESTCASE(36,TestTimeZoneDisplayName); |
| 77 TESTCASE(37,TestRoundtripWithCalendar); |
| 78 TESTCASE(38,Test6338); |
| 79 TESTCASE(39,Test6726); |
| 80 TESTCASE(40,TestGMTParsing); |
| 81 TESTCASE(41,Test6880); |
| 82 TESTCASE(42,TestISOEra); |
| 83 TESTCASE(43,TestFormalChineseDate); |
| 84 /* |
| 85 TESTCASE(43,TestRelativeError); |
| 86 TESTCASE(44,TestRelativeOther); |
| 87 */ |
| 88 default: name = ""; break; |
| 89 } |
| 90 } |
| 91 |
| 92 // Test written by Wally Wedel and emailed to me. |
| 93 void DateFormatTest::TestWallyWedel() |
| 94 { |
| 95 UErrorCode status = U_ZERO_ERROR; |
| 96 /* |
| 97 * Instantiate a TimeZone so we can get the ids. |
| 98 */ |
| 99 TimeZone *tz = new SimpleTimeZone(7,""); |
| 100 /* |
| 101 * Computational variables. |
| 102 */ |
| 103 int32_t offset, hours, minutes, seconds; |
| 104 /* |
| 105 * Instantiate a SimpleDateFormat set up to produce a full time |
| 106 zone name. |
| 107 */ |
| 108 SimpleDateFormat *sdf = new SimpleDateFormat((UnicodeString)"zzzz", status); |
| 109 /* |
| 110 * A String array for the time zone ids. |
| 111 */ |
| 112 int32_t ids_length; |
| 113 StringEnumeration* ids = TimeZone::createEnumeration(); |
| 114 ids_length = ids->count(status); |
| 115 /* |
| 116 * How many ids do we have? |
| 117 */ |
| 118 logln("Time Zone IDs size: %d", ids_length); |
| 119 /* |
| 120 * Column headings (sort of) |
| 121 */ |
| 122 logln("Ordinal ID offset(h:m) name"); |
| 123 /* |
| 124 * Loop through the tzs. |
| 125 */ |
| 126 UDate today = Calendar::getNow(); |
| 127 Calendar *cal = Calendar::createInstance(status); |
| 128 for (int32_t i = 0; i < ids_length; i++) { |
| 129 // logln(i + " " + ids[i]); |
| 130 const UnicodeString* id = ids->snext(status); |
| 131 TimeZone *ttz = TimeZone::createTimeZone(*id); |
| 132 // offset = ttz.getRawOffset(); |
| 133 cal->setTimeZone(*ttz); |
| 134 cal->setTime(today, status); |
| 135 offset = cal->get(UCAL_ZONE_OFFSET, status) + cal->get(UCAL_DST_OFFSET,
status); |
| 136 // logln(i + " " + ids[i] + " offset " + offset); |
| 137 const char* sign = "+"; |
| 138 if (offset < 0) { |
| 139 sign = "-"; |
| 140 offset = -offset; |
| 141 } |
| 142 hours = offset/3600000; |
| 143 minutes = (offset%3600000)/60000; |
| 144 seconds = (offset%60000)/1000; |
| 145 UnicodeString dstOffset = (UnicodeString)"" + sign + (hours < 10 ? "0" :
"") + |
| 146 (int32_t)hours + ":" + (minutes < 10 ? "0" : "") + (int32_t)minutes; |
| 147 if (seconds != 0) { |
| 148 dstOffset = dstOffset + ":" + (seconds < 10 ? "0" : "") + seconds; |
| 149 } |
| 150 /* |
| 151 * Instantiate a date so we can display the time zone name. |
| 152 */ |
| 153 sdf->setTimeZone(*ttz); |
| 154 /* |
| 155 * Format the output. |
| 156 */ |
| 157 UnicodeString fmtOffset; |
| 158 FieldPosition pos(0); |
| 159 sdf->format(today,fmtOffset, pos); |
| 160 // UnicodeString fmtOffset = tzS.toString(); |
| 161 UnicodeString *fmtDstOffset = 0; |
| 162 if (fmtOffset.startsWith("GMT")) |
| 163 { |
| 164 //fmtDstOffset = fmtOffset->substring(3); |
| 165 fmtDstOffset = new UnicodeString(); |
| 166 fmtOffset.extract(3, fmtOffset.length(), *fmtDstOffset); |
| 167 } |
| 168 /* |
| 169 * Show our result. |
| 170 */ |
| 171 UBool ok = fmtDstOffset == 0 || *fmtDstOffset == dstOffset; |
| 172 if (ok) |
| 173 { |
| 174 logln(UnicodeString() + i + " " + *id + " " + dstOffset + |
| 175 " " + fmtOffset + |
| 176 (fmtDstOffset != 0 ? " ok" : " ?")); |
| 177 } |
| 178 else |
| 179 { |
| 180 errln(UnicodeString() + i + " " + *id + " " + dstOffset + |
| 181 " " + fmtOffset + " *** FAIL ***"); |
| 182 } |
| 183 delete ttz; |
| 184 delete fmtDstOffset; |
| 185 } |
| 186 delete cal; |
| 187 // delete ids; // TODO: BAD API |
| 188 delete ids; |
| 189 delete sdf; |
| 190 delete tz; |
| 191 } |
| 192 |
| 193 // ------------------------------------- |
| 194 |
| 195 /** |
| 196 * Test operator== |
| 197 */ |
| 198 void |
| 199 DateFormatTest::TestEquals() |
| 200 { |
| 201 DateFormat* fmtA = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, Da
teFormat::FULL); |
| 202 DateFormat* fmtB = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, Da
teFormat::FULL); |
| 203 if ( fmtA == NULL || fmtB == NULL){ |
| 204 dataerrln("Error calling DateFormat::createDateTimeInstance"); |
| 205 delete fmtA; |
| 206 delete fmtB; |
| 207 return; |
| 208 } |
| 209 |
| 210 if (!(*fmtA == *fmtB)) errln((UnicodeString)"FAIL"); |
| 211 delete fmtA; |
| 212 delete fmtB; |
| 213 |
| 214 TimeZone* test = TimeZone::createTimeZone("PDT"); |
| 215 delete test; |
| 216 } |
| 217 |
| 218 // ------------------------------------- |
| 219 |
| 220 /** |
| 221 * Test the parsing of 2-digit years. |
| 222 */ |
| 223 void |
| 224 DateFormatTest::TestTwoDigitYearDSTParse(void) |
| 225 { |
| 226 UErrorCode status = U_ZERO_ERROR; |
| 227 SimpleDateFormat* fullFmt = new SimpleDateFormat((UnicodeString)"EEE MMM dd
HH:mm:ss.SSS zzz yyyy G", status); |
| 228 SimpleDateFormat *fmt = new SimpleDateFormat((UnicodeString)"dd-MMM-yy h:mm:
ss 'o''clock' a z", Locale::getEnglish(), status); |
| 229 //DateFormat* fmt = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, D
ateFormat::FULL, Locale::ENGLISH); |
| 230 UnicodeString* s = new UnicodeString("03-Apr-04 2:20:47 o'clock AM PST", "")
; |
| 231 TimeZone* defaultTZ = TimeZone::createDefault(); |
| 232 TimeZone* PST = TimeZone::createTimeZone("PST"); |
| 233 int32_t defaultOffset = defaultTZ->getRawOffset(); |
| 234 int32_t PSTOffset = PST->getRawOffset(); |
| 235 int32_t hour = 2 + (defaultOffset - PSTOffset) / (60*60*1000); |
| 236 // hour is the expected hour of day, in units of seconds |
| 237 hour = ((hour < 0) ? hour + 24 : hour) * 60*60; |
| 238 |
| 239 UnicodeString str; |
| 240 |
| 241 if(U_FAILURE(status)) { |
| 242 dataerrln("Could not set up test. exitting - %s", u_errorName(status)); |
| 243 return; |
| 244 } |
| 245 |
| 246 UDate d = fmt->parse(*s, status); |
| 247 logln(*s + " P> " + ((DateFormat*)fullFmt)->format(d, str)); |
| 248 int32_t y, m, day, hr, min, sec; |
| 249 dateToFields(d, y, m, day, hr, min, sec); |
| 250 hour += defaultTZ->inDaylightTime(d, status) ? 1 : 0; |
| 251 hr = hr*60*60; |
| 252 if (hr != hour) |
| 253 errln((UnicodeString)"FAIL: Should parse to hour " + hour + " but got "
+ hr); |
| 254 |
| 255 if (U_FAILURE(status)) |
| 256 errln((UnicodeString)"FAIL: " + (int32_t)status); |
| 257 |
| 258 delete s; |
| 259 delete fmt; |
| 260 delete fullFmt; |
| 261 delete PST; |
| 262 delete defaultTZ; |
| 263 } |
| 264 |
| 265 // ------------------------------------- |
| 266 |
| 267 UChar toHexString(int32_t i) { return (UChar)(i + (i < 10 ? 0x30 : (0x41 - 10)))
; } |
| 268 |
| 269 UnicodeString& |
| 270 DateFormatTest::escape(UnicodeString& s) |
| 271 { |
| 272 UnicodeString buf; |
| 273 for (int32_t i=0; i<s.length(); ++i) |
| 274 { |
| 275 UChar c = s[(int32_t)i]; |
| 276 if (c <= (UChar)0x7F) buf += c; |
| 277 else { |
| 278 buf += (UChar)0x5c; buf += (UChar)0x55; |
| 279 buf += toHexString((c & 0xF000) >> 12); |
| 280 buf += toHexString((c & 0x0F00) >> 8); |
| 281 buf += toHexString((c & 0x00F0) >> 4); |
| 282 buf += toHexString(c & 0x000F); |
| 283 } |
| 284 } |
| 285 return (s = buf); |
| 286 } |
| 287 |
| 288 // ------------------------------------- |
| 289 |
| 290 /** |
| 291 * This MUST be kept in sync with DateFormatSymbols.gPatternChars. |
| 292 */ |
| 293 static const char* PATTERN_CHARS = "GyMdkHmsSEDFwWahKzYeugAZvcLQqV"; |
| 294 |
| 295 /** |
| 296 * A list of the names of all the fields in DateFormat. |
| 297 * This MUST be kept in sync with DateFormat. |
| 298 */ |
| 299 static const char* DATEFORMAT_FIELD_NAMES[] = { |
| 300 "ERA_FIELD", |
| 301 "YEAR_FIELD", |
| 302 "MONTH_FIELD", |
| 303 "DATE_FIELD", |
| 304 "HOUR_OF_DAY1_FIELD", |
| 305 "HOUR_OF_DAY0_FIELD", |
| 306 "MINUTE_FIELD", |
| 307 "SECOND_FIELD", |
| 308 "MILLISECOND_FIELD", |
| 309 "DAY_OF_WEEK_FIELD", |
| 310 "DAY_OF_YEAR_FIELD", |
| 311 "DAY_OF_WEEK_IN_MONTH_FIELD", |
| 312 "WEEK_OF_YEAR_FIELD", |
| 313 "WEEK_OF_MONTH_FIELD", |
| 314 "AM_PM_FIELD", |
| 315 "HOUR1_FIELD", |
| 316 "HOUR0_FIELD", |
| 317 "TIMEZONE_FIELD", |
| 318 "YEAR_WOY_FIELD", |
| 319 "DOW_LOCAL_FIELD", |
| 320 "EXTENDED_YEAR_FIELD", |
| 321 "JULIAN_DAY_FIELD", |
| 322 "MILLISECONDS_IN_DAY_FIELD", |
| 323 "TIMEZONE_RFC_FIELD", |
| 324 "GENERIC_TIMEZONE_FIELD", |
| 325 "STAND_ALONE_DAY_FIELD", |
| 326 "STAND_ALONE_MONTH_FIELD", |
| 327 "QUARTER_FIELD", |
| 328 "STAND_ALONE_QUARTER_FIELD", |
| 329 "TIMEZONE_SPECIAL_FIELD" |
| 330 }; |
| 331 |
| 332 static const int32_t DATEFORMAT_FIELD_NAMES_LENGTH = |
| 333 sizeof(DATEFORMAT_FIELD_NAMES) / sizeof(DATEFORMAT_FIELD_NAMES[0]); |
| 334 |
| 335 /** |
| 336 * Verify that returned field position indices are correct. |
| 337 */ |
| 338 void DateFormatTest::TestFieldPosition() { |
| 339 UErrorCode ec = U_ZERO_ERROR; |
| 340 int32_t i, j, exp; |
| 341 UnicodeString buf; |
| 342 |
| 343 // Verify data |
| 344 DateFormatSymbols rootSyms(Locale(""), ec); |
| 345 assertSuccess("DateFormatSymbols", ec); |
| 346 if (U_FAILURE(ec)) { |
| 347 return; |
| 348 } |
| 349 |
| 350 // local pattern chars data is not longer loaded |
| 351 // from icu locale bundle |
| 352 assertEquals("patternChars", PATTERN_CHARS, rootSyms.getLocalPatternChars(bu
f)); |
| 353 assertEquals("patternChars", PATTERN_CHARS, DateFormatSymbols::getPatternUCh
ars()); |
| 354 assertTrue("DATEFORMAT_FIELD_NAMES", DATEFORMAT_FIELD_NAMES_LENGTH == UDAT_F
IELD_COUNT); |
| 355 assertTrue("Data", UDAT_FIELD_COUNT == uprv_strlen(PATTERN_CHARS)); |
| 356 |
| 357 // Create test formatters |
| 358 const int32_t COUNT = 4; |
| 359 DateFormat* dateFormats[COUNT]; |
| 360 dateFormats[0] = DateFormat::createDateTimeInstance(DateFormat::kFull, DateF
ormat::kFull, Locale::getUS()); |
| 361 dateFormats[1] = DateFormat::createDateTimeInstance(DateFormat::kFull, DateF
ormat::kFull, Locale::getFrance()); |
| 362 // Make the pattern "G y M d..." |
| 363 buf.remove().append(PATTERN_CHARS); |
| 364 for (j=buf.length()-1; j>=0; --j) buf.insert(j, (UChar)32/*' '*/); |
| 365 dateFormats[2] = new SimpleDateFormat(buf, Locale::getUS(), ec); |
| 366 // Make the pattern "GGGG yyyy MMMM dddd..." |
| 367 for (j=buf.length()-1; j>=0; j-=2) { |
| 368 for (i=0; i<3; ++i) { |
| 369 buf.insert(j, buf.charAt(j)); |
| 370 } |
| 371 } |
| 372 dateFormats[3] = new SimpleDateFormat(buf, Locale::getUS(), ec); |
| 373 if(U_FAILURE(ec)){ |
| 374 errln(UnicodeString("Could not create SimpleDateFormat object for locale
en_US. Error: " )+ UnicodeString(u_errorName(ec))); |
| 375 return; |
| 376 } |
| 377 UDate aug13 = 871508052513.0; |
| 378 |
| 379 // Expected output field values for above DateFormats on aug13 |
| 380 // Fields are given in order of DateFormat field number |
| 381 const char* EXPECTED[] = { |
| 382 "", "1997", "August", "13", "", "", "34", "12", "", |
| 383 "Wednesday", "", "", "", "", "PM", "2", "", "Pacific Daylight Time", "",
"", "", "", "", "", "", "", "", "", "","", |
| 384 |
| 385 "", "1997", "ao\\u00FBt", "13", "", "14", "34", "12", "", |
| 386 "mercredi", "", "", "", "", "", "", "", "heure avanc\\u00e9e du Pacifiqu
e", "", "", "", "", "", "", "", "", "", "", "", "", |
| 387 |
| 388 "AD", "1997", "8", "13", "14", "14", "34", "12", "5", |
| 389 "Wed", "225", "2", "33", "2", "PM", "2", "2", "PDT", "1997", "4", "1997"
, "2450674", "52452513", "-0700", "PT", "4", "8", "3", "3","PDT", |
| 390 |
| 391 "Anno Domini", "1997", "August", "0013", "0014", "0014", "0034", "0012",
"5130", |
| 392 "Wednesday", "0225", "0002", "0033", "0002", "PM", "0002", "0002", "Paci
fic Daylight Time", "1997", "Wednesday", "1997", "2450674", "52452513", "GMT-07:
00", |
| 393 "Pacific Time", "Wednesday", "August", "3rd quarter", "3rd quarter", "U
nited States (Los Angeles)" |
| 394 }; |
| 395 |
| 396 const int32_t EXPECTED_LENGTH = sizeof(EXPECTED)/sizeof(EXPECTED[0]); |
| 397 |
| 398 assertTrue("data size", EXPECTED_LENGTH == COUNT * UDAT_FIELD_COUNT); |
| 399 |
| 400 TimeZone* PT = TimeZone::createTimeZone("America/Los_Angeles"); |
| 401 for (j = 0, exp = 0; j < COUNT; ++j) { |
| 402 // String str; |
| 403 DateFormat* df = dateFormats[j]; |
| 404 df->setTimeZone(*PT); |
| 405 SimpleDateFormat* sdtfmt = dynamic_cast<SimpleDateFormat*>(df); |
| 406 if (sdtfmt != NULL) { |
| 407 logln(" Pattern = " + sdtfmt->toPattern(buf.remove())); |
| 408 } else { |
| 409 logln(" Pattern = ? (not a SimpleDateFormat)"); |
| 410 } |
| 411 logln((UnicodeString)" Result = " + df->format(aug13, buf.remove())); |
| 412 |
| 413 int32_t expBase = exp; // save for later |
| 414 for (i = 0; i < UDAT_FIELD_COUNT; ++i, ++exp) { |
| 415 FieldPosition pos(i); |
| 416 buf.remove(); |
| 417 df->format(aug13, buf, pos); |
| 418 UnicodeString field; |
| 419 buf.extractBetween(pos.getBeginIndex(), pos.getEndIndex(), field); |
| 420 assertEquals((UnicodeString)"field #" + i + " " + DATEFORMAT_FIELD_N
AMES[i], |
| 421 ctou(EXPECTED[exp]), field); |
| 422 } |
| 423 |
| 424 // test FieldPositionIterator API |
| 425 logln("FieldPositionIterator"); |
| 426 { |
| 427 UErrorCode status = U_ZERO_ERROR; |
| 428 FieldPositionIterator posIter; |
| 429 FieldPosition fp; |
| 430 |
| 431 buf.remove(); |
| 432 df->format(aug13, buf, &posIter, status); |
| 433 while (posIter.next(fp)) { |
| 434 int32_t i = fp.getField(); |
| 435 UnicodeString field; |
| 436 buf.extractBetween(fp.getBeginIndex(), fp.getEndIndex(), field); |
| 437 assertEquals((UnicodeString)"field #" + i + " " + DATEFORMAT_FIELD_N
AMES[i], |
| 438 ctou(EXPECTED[expBase + i]), field); |
| 439 } |
| 440 |
| 441 } |
| 442 } |
| 443 |
| 444 |
| 445 // test null posIter |
| 446 buf.remove(); |
| 447 UErrorCode status = U_ZERO_ERROR; |
| 448 dateFormats[0]->format(aug13, buf, NULL, status); |
| 449 // if we didn't crash, we succeeded. |
| 450 |
| 451 for (i=0; i<COUNT; ++i) { |
| 452 delete dateFormats[i]; |
| 453 } |
| 454 delete PT; |
| 455 } |
| 456 |
| 457 // ------------------------------------- |
| 458 |
| 459 /** |
| 460 * General parse/format tests. Add test cases as needed. |
| 461 */ |
| 462 void DateFormatTest::TestGeneral() { |
| 463 const char* DATA[] = { |
| 464 "yyyy MM dd HH:mm:ss.SSS", |
| 465 |
| 466 // Milliseconds are left-justified, since they format as fractions of a
second |
| 467 "y/M/d H:mm:ss.S", "fp", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31.
5", "2004 03 10 16:36:31.500", |
| 468 "y/M/d H:mm:ss.SS", "fp", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31
.56", "2004 03 10 16:36:31.560", |
| 469 "y/M/d H:mm:ss.SSS", "F", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31
.567", |
| 470 "y/M/d H:mm:ss.SSSS", "pf", "2004/3/10 16:36:31.5679", "2004 03 10 16:36
:31.568", "2004/3/10 16:36:31.5680", |
| 471 }; |
| 472 expect(DATA, ARRAY_SIZE(DATA), Locale("en", "", "")); |
| 473 } |
| 474 |
| 475 // ------------------------------------- |
| 476 |
| 477 /** |
| 478 * Verify that strings which contain incomplete specifications are parsed |
| 479 * correctly. In some instances, this means not being parsed at all, and |
| 480 * returning an appropriate error. |
| 481 */ |
| 482 void |
| 483 DateFormatTest::TestPartialParse994() |
| 484 { |
| 485 UErrorCode status = U_ZERO_ERROR; |
| 486 SimpleDateFormat* f = new SimpleDateFormat(status); |
| 487 if (U_FAILURE(status)) { |
| 488 dataerrln("Fail new SimpleDateFormat: %s", u_errorName(status)); |
| 489 delete f; |
| 490 return; |
| 491 } |
| 492 UDate null = 0; |
| 493 tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 10:11:42", date(97, 1 - 1, 17, 1
0, 11, 42)); |
| 494 tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 10:", null); |
| 495 tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 10", null); |
| 496 tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 ", null); |
| 497 tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17", null); |
| 498 if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received durin
g test: " + (int32_t)status); |
| 499 delete f; |
| 500 } |
| 501 |
| 502 // ------------------------------------- |
| 503 |
| 504 void |
| 505 DateFormatTest::tryPat994(SimpleDateFormat* format, const char* pat, const char*
str, UDate expected) |
| 506 { |
| 507 UErrorCode status = U_ZERO_ERROR; |
| 508 UDate null = 0; |
| 509 logln(UnicodeString("Pattern \"") + pat + "\" String \"" + str + "\""); |
| 510 //try { |
| 511 format->applyPattern(pat); |
| 512 UDate date = format->parse(str, status); |
| 513 if (U_FAILURE(status) || date == null) |
| 514 { |
| 515 logln((UnicodeString)"ParseException: " + (int32_t)status); |
| 516 if (expected != null) errln((UnicodeString)"FAIL: Expected " + dateT
oString(expected)); |
| 517 } |
| 518 else |
| 519 { |
| 520 UnicodeString f; |
| 521 ((DateFormat*)format)->format(date, f); |
| 522 logln(UnicodeString(" parse(") + str + ") -> " + dateToString(date))
; |
| 523 logln((UnicodeString)" format -> " + f); |
| 524 if (expected == null || |
| 525 !(date == expected)) errln((UnicodeString)"FAIL: Expected null")
;//" + expected); |
| 526 if (!(f == str)) errln(UnicodeString("FAIL: Expected ") + str); |
| 527 } |
| 528 //} |
| 529 //catch(ParseException e) { |
| 530 // logln((UnicodeString)"ParseException: " + e.getMessage()); |
| 531 // if (expected != null) errln((UnicodeString)"FAIL: Expected " + dateToS
tring(expected)); |
| 532 //} |
| 533 //catch(Exception e) { |
| 534 // errln((UnicodeString)"*** Exception:"); |
| 535 // e.printStackTrace(); |
| 536 //} |
| 537 } |
| 538 |
| 539 // ------------------------------------- |
| 540 |
| 541 /** |
| 542 * Verify the behavior of patterns in which digits for different fields run toge
ther |
| 543 * without intervening separators. |
| 544 */ |
| 545 void |
| 546 DateFormatTest::TestRunTogetherPattern985() |
| 547 { |
| 548 UErrorCode status = U_ZERO_ERROR; |
| 549 UnicodeString format("yyyyMMddHHmmssSSS"); |
| 550 UnicodeString now, then; |
| 551 //UBool flag; |
| 552 SimpleDateFormat *formatter = new SimpleDateFormat(format, status); |
| 553 if (U_FAILURE(status)) { |
| 554 dataerrln("Fail new SimpleDateFormat: %s", u_errorName(status)); |
| 555 delete formatter; |
| 556 return; |
| 557 } |
| 558 UDate date1 = Calendar::getNow(); |
| 559 ((DateFormat*)formatter)->format(date1, now); |
| 560 logln(now); |
| 561 ParsePosition pos(0); |
| 562 UDate date2 = formatter->parse(now, pos); |
| 563 if (date2 == 0) then = "Parse stopped at " + pos.getIndex(); |
| 564 else ((DateFormat*)formatter)->format(date2, then); |
| 565 logln(then); |
| 566 if (!(date2 == date1)) errln((UnicodeString)"FAIL"); |
| 567 delete formatter; |
| 568 if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received durin
g test: " + (int32_t)status); |
| 569 } |
| 570 |
| 571 // ------------------------------------- |
| 572 |
| 573 /** |
| 574 * Verify the behavior of patterns in which digits for different fields run toge
ther |
| 575 * without intervening separators. |
| 576 */ |
| 577 void |
| 578 DateFormatTest::TestRunTogetherPattern917() |
| 579 { |
| 580 UErrorCode status = U_ZERO_ERROR; |
| 581 SimpleDateFormat* fmt; |
| 582 UnicodeString myDate; |
| 583 fmt = new SimpleDateFormat((UnicodeString)"yyyy/MM/dd", status); |
| 584 if (U_FAILURE(status)) { |
| 585 dataerrln("Fail new SimpleDateFormat: %s", u_errorName(status)); |
| 586 delete fmt; |
| 587 return; |
| 588 } |
| 589 myDate = "1997/02/03"; |
| 590 testIt917(fmt, myDate, date(97, 2 - 1, 3)); |
| 591 delete fmt; |
| 592 fmt = new SimpleDateFormat((UnicodeString)"yyyyMMdd", status); |
| 593 myDate = "19970304"; |
| 594 testIt917(fmt, myDate, date(97, 3 - 1, 4)); |
| 595 delete fmt; |
| 596 if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received durin
g test: " + (int32_t)status); |
| 597 } |
| 598 |
| 599 // ------------------------------------- |
| 600 |
| 601 void |
| 602 DateFormatTest::testIt917(SimpleDateFormat* fmt, UnicodeString& str, UDate expec
ted) |
| 603 { |
| 604 UErrorCode status = U_ZERO_ERROR; |
| 605 UnicodeString pattern; |
| 606 logln((UnicodeString)"pattern=" + fmt->toPattern(pattern) + " string=" + s
tr); |
| 607 Formattable o; |
| 608 //try { |
| 609 ((Format*)fmt)->parseObject(str, o, status); |
| 610 //} |
| 611 if (U_FAILURE(status)) return; |
| 612 //catch(ParseException e) { |
| 613 // e.printStackTrace(); |
| 614 // return; |
| 615 //} |
| 616 logln((UnicodeString)"Parsed object: " + dateToString(o.getDate())); |
| 617 if (!(o.getDate() == expected)) errln((UnicodeString)"FAIL: Expected " + dat
eToString(expected)); |
| 618 UnicodeString formatted; ((Format*)fmt)->format(o, formatted, status); |
| 619 logln((UnicodeString)"Formatted string: " + formatted); |
| 620 if (!(formatted == str)) errln((UnicodeString)"FAIL: Expected " + str); |
| 621 if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received durin
g test: " + (int32_t)status); |
| 622 } |
| 623 |
| 624 // ------------------------------------- |
| 625 |
| 626 /** |
| 627 * Verify the handling of Czech June and July, which have the unique attribute t
hat |
| 628 * one is a proper prefix substring of the other. |
| 629 */ |
| 630 void |
| 631 DateFormatTest::TestCzechMonths459() |
| 632 { |
| 633 UErrorCode status = U_ZERO_ERROR; |
| 634 DateFormat* fmt = DateFormat::createDateInstance(DateFormat::FULL, Locale("c
s", "", "")); |
| 635 if (fmt == NULL){ |
| 636 dataerrln("Error calling DateFormat::createDateInstance()"); |
| 637 return; |
| 638 } |
| 639 |
| 640 UnicodeString pattern; |
| 641 logln((UnicodeString)"Pattern " + ((SimpleDateFormat*) fmt)->toPattern(patte
rn)); |
| 642 UDate june = date(97, UCAL_JUNE, 15); |
| 643 UDate july = date(97, UCAL_JULY, 15); |
| 644 UnicodeString juneStr; fmt->format(june, juneStr); |
| 645 UnicodeString julyStr; fmt->format(july, julyStr); |
| 646 //try { |
| 647 logln((UnicodeString)"format(June 15 1997) = " + juneStr); |
| 648 UDate d = fmt->parse(juneStr, status); |
| 649 UnicodeString s; fmt->format(d, s); |
| 650 int32_t month,yr,day,hr,min,sec; dateToFields(d,yr,month,day,hr,min,sec)
; |
| 651 logln((UnicodeString)" -> parse -> " + s + " (month = " + month + ")"); |
| 652 if (month != UCAL_JUNE) errln((UnicodeString)"FAIL: Month should be June
"); |
| 653 logln((UnicodeString)"format(July 15 1997) = " + julyStr); |
| 654 d = fmt->parse(julyStr, status); |
| 655 fmt->format(d, s); |
| 656 dateToFields(d,yr,month,day,hr,min,sec); |
| 657 logln((UnicodeString)" -> parse -> " + s + " (month = " + month + ")"); |
| 658 if (month != UCAL_JULY) errln((UnicodeString)"FAIL: Month should be July
"); |
| 659 //} |
| 660 //catch(ParseException e) { |
| 661 if (U_FAILURE(status)) |
| 662 errln((UnicodeString)"Exception: " + (int32_t)status); |
| 663 //} |
| 664 delete fmt; |
| 665 } |
| 666 |
| 667 // ------------------------------------- |
| 668 |
| 669 /** |
| 670 * Test the handling of 'D' in patterns. |
| 671 */ |
| 672 void |
| 673 DateFormatTest::TestLetterDPattern212() |
| 674 { |
| 675 UErrorCode status = U_ZERO_ERROR; |
| 676 UnicodeString dateString("1995-040.05:01:29"); |
| 677 UnicodeString bigD("yyyy-DDD.hh:mm:ss"); |
| 678 UnicodeString littleD("yyyy-ddd.hh:mm:ss"); |
| 679 UDate expLittleD = date(95, 0, 1, 5, 1, 29); |
| 680 UDate expBigD = expLittleD + 39 * 24 * 3600000.0; |
| 681 expLittleD = expBigD; // Expect the same, with default lenient parsing |
| 682 logln((UnicodeString)"dateString= " + dateString); |
| 683 SimpleDateFormat *formatter = new SimpleDateFormat(bigD, status); |
| 684 if (U_FAILURE(status)) { |
| 685 dataerrln("Fail new SimpleDateFormat: %s", u_errorName(status)); |
| 686 delete formatter; |
| 687 return; |
| 688 } |
| 689 ParsePosition pos(0); |
| 690 UDate myDate = formatter->parse(dateString, pos); |
| 691 logln((UnicodeString)"Using " + bigD + " -> " + myDate); |
| 692 if (myDate != expBigD) errln((UnicodeString)"FAIL: Expected " + dateToString
(expBigD)); |
| 693 delete formatter; |
| 694 formatter = new SimpleDateFormat(littleD, status); |
| 695 ASSERT_OK(status); |
| 696 pos = ParsePosition(0); |
| 697 myDate = formatter->parse(dateString, pos); |
| 698 logln((UnicodeString)"Using " + littleD + " -> " + dateToString(myDate)); |
| 699 if (myDate != expLittleD) errln((UnicodeString)"FAIL: Expected " + dateToStr
ing(expLittleD)); |
| 700 delete formatter; |
| 701 if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received durin
g test: " + (int32_t)status); |
| 702 } |
| 703 |
| 704 // ------------------------------------- |
| 705 |
| 706 /** |
| 707 * Test the day of year pattern. |
| 708 */ |
| 709 void |
| 710 DateFormatTest::TestDayOfYearPattern195() |
| 711 { |
| 712 UErrorCode status = U_ZERO_ERROR; |
| 713 UDate today = Calendar::getNow(); |
| 714 int32_t year,month,day,hour,min,sec; dateToFields(today,year,month,day,hour,
min,sec); |
| 715 UDate expected = date(year, month, day); |
| 716 logln((UnicodeString)"Test Date: " + dateToString(today)); |
| 717 SimpleDateFormat* sdf = (SimpleDateFormat*)DateFormat::createDateInstance(); |
| 718 if (sdf == NULL){ |
| 719 dataerrln("Error calling DateFormat::createDateInstance()"); |
| 720 return; |
| 721 } |
| 722 tryPattern(*sdf, today, 0, expected); |
| 723 tryPattern(*sdf, today, "G yyyy DDD", expected); |
| 724 delete sdf; |
| 725 if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received durin
g test: " + (int32_t)status); |
| 726 } |
| 727 |
| 728 // ------------------------------------- |
| 729 |
| 730 void |
| 731 DateFormatTest::tryPattern(SimpleDateFormat& sdf, UDate d, const char* pattern,
UDate expected) |
| 732 { |
| 733 UErrorCode status = U_ZERO_ERROR; |
| 734 if (pattern != 0) sdf.applyPattern(pattern); |
| 735 UnicodeString thePat; |
| 736 logln((UnicodeString)"pattern: " + sdf.toPattern(thePat)); |
| 737 UnicodeString formatResult; (*(DateFormat*)&sdf).format(d, formatResult); |
| 738 logln((UnicodeString)" format -> " + formatResult); |
| 739 // try { |
| 740 UDate d2 = sdf.parse(formatResult, status); |
| 741 logln((UnicodeString)" parse(" + formatResult + ") -> " + dateToString(d
2)); |
| 742 if (d2 != expected) errln((UnicodeString)"FAIL: Expected " + dateToStrin
g(expected)); |
| 743 UnicodeString format2; (*(DateFormat*)&sdf).format(d2, format2); |
| 744 logln((UnicodeString)" format -> " + format2); |
| 745 if (!(formatResult == format2)) errln((UnicodeString)"FAIL: Round trip d
rift"); |
| 746 //} |
| 747 //catch(Exception e) { |
| 748 if (U_FAILURE(status)) |
| 749 errln((UnicodeString)"Error: " + (int32_t)status); |
| 750 //} |
| 751 } |
| 752 |
| 753 // ------------------------------------- |
| 754 |
| 755 /** |
| 756 * Test the handling of single quotes in patterns. |
| 757 */ |
| 758 void |
| 759 DateFormatTest::TestQuotePattern161() |
| 760 { |
| 761 UErrorCode status = U_ZERO_ERROR; |
| 762 SimpleDateFormat* formatter = new SimpleDateFormat((UnicodeString)"MM/dd/yyy
y 'at' hh:mm:ss a zzz", status); |
| 763 if (U_FAILURE(status)) { |
| 764 dataerrln("Fail new SimpleDateFormat: %s", u_errorName(status)); |
| 765 delete formatter; |
| 766 return; |
| 767 } |
| 768 UDate currentTime_1 = date(97, UCAL_AUGUST, 13, 10, 42, 28); |
| 769 UnicodeString dateString; ((DateFormat*)formatter)->format(currentTime_1, da
teString); |
| 770 UnicodeString exp("08/13/1997 at 10:42:28 AM "); |
| 771 logln((UnicodeString)"format(" + dateToString(currentTime_1) + ") = " + date
String); |
| 772 if (0 != dateString.compareBetween(0, exp.length(), exp, 0, exp.length())) e
rrln((UnicodeString)"FAIL: Expected " + exp); |
| 773 delete formatter; |
| 774 if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received durin
g test: " + (int32_t)status); |
| 775 } |
| 776 |
| 777 // ------------------------------------- |
| 778 |
| 779 /** |
| 780 * Verify the correct behavior when handling invalid input strings. |
| 781 */ |
| 782 void |
| 783 DateFormatTest::TestBadInput135() |
| 784 { |
| 785 UErrorCode status = U_ZERO_ERROR; |
| 786 DateFormat::EStyle looks[] = { |
| 787 DateFormat::SHORT, DateFormat::MEDIUM, DateFormat::LONG, DateFormat::FUL
L |
| 788 }; |
| 789 int32_t looks_length = (int32_t)(sizeof(looks) / sizeof(looks[0])); |
| 790 const char* strings[] = { |
| 791 "Mar 15", "Mar 15 1997", "asdf", "3/1/97 1:23:", "3/1/00 1:23:45 AM" |
| 792 }; |
| 793 int32_t strings_length = (int32_t)(sizeof(strings) / sizeof(strings[0])); |
| 794 DateFormat *full = DateFormat::createDateTimeInstance(DateFormat::LONG, Date
Format::LONG); |
| 795 if(full==NULL) { |
| 796 dataerrln("could not create date time instance"); |
| 797 return; |
| 798 } |
| 799 UnicodeString expected("March 1, 2000 1:23:45 AM "); |
| 800 for (int32_t i = 0; i < strings_length;++i) { |
| 801 const char* text = strings[i]; |
| 802 for (int32_t j = 0; j < looks_length;++j) { |
| 803 DateFormat::EStyle dateLook = looks[j]; |
| 804 for (int32_t k = 0; k < looks_length;++k) { |
| 805 DateFormat::EStyle timeLook = looks[k]; |
| 806 DateFormat *df = DateFormat::createDateTimeInstance(dateLook, ti
meLook); |
| 807 if (df == NULL){ |
| 808 dataerrln("Error calling DateFormat::createDateTimeInstance(
)"); |
| 809 continue; |
| 810 } |
| 811 UnicodeString prefix = UnicodeString(text) + ", " + dateLook + "
/" + timeLook + ": "; |
| 812 //try { |
| 813 UDate when = df->parse(text, status); |
| 814 if (when == 0 && U_SUCCESS(status)) { |
| 815 errln(prefix + "SHOULD NOT HAPPEN: parse returned 0."); |
| 816 continue; |
| 817 } |
| 818 if (U_SUCCESS(status)) |
| 819 { |
| 820 UnicodeString format; |
| 821 full->format(when, format); |
| 822 logln(prefix + "OK: " + format); |
| 823 if (0!=format.compareBetween(0, expected.length(), expec
ted, 0, expected.length())) |
| 824 errln((UnicodeString)"FAIL: Expected " + expected +
" got " + format); |
| 825 } |
| 826 //} |
| 827 //catch(ParseException e) { |
| 828 else |
| 829 status = U_ZERO_ERROR; |
| 830 //} |
| 831 //catch(StringIndexOutOfBoundsException e) { |
| 832 // errln(prefix + "SHOULD NOT HAPPEN: " + (int)status); |
| 833 //} |
| 834 delete df; |
| 835 } |
| 836 } |
| 837 } |
| 838 delete full; |
| 839 if (U_FAILURE(status)) |
| 840 errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_
t)status); |
| 841 } |
| 842 |
| 843 static const char* const parseFormats[] = { |
| 844 "MMMM d, yyyy", |
| 845 "MMMM d yyyy", |
| 846 "M/d/yy", |
| 847 "d MMMM, yyyy", |
| 848 "d MMMM yyyy", |
| 849 "d MMMM", |
| 850 "MMMM d", |
| 851 "yyyy", |
| 852 "h:mm a MMMM d, yyyy" |
| 853 }; |
| 854 |
| 855 static const char* const inputStrings[] = { |
| 856 "bogus string", 0, 0, 0, 0, 0, 0, 0, 0, 0, |
| 857 "April 1, 1997", "April 1, 1997", 0, 0, 0, 0, 0, "April 1", 0, 0, |
| 858 "Jan 1, 1970", "January 1, 1970", 0, 0, 0, 0, 0, "January 1", 0, 0, |
| 859 "Jan 1 2037", 0, "January 1 2037", 0, 0, 0, 0, "January 1", 0, 0, |
| 860 "1/1/70", 0, 0, "1/1/70", 0, 0, 0, 0, "0001", 0, |
| 861 "5 May 1997", 0, 0, 0, 0, "5 May 1997", "5 May", 0, "0005", 0, |
| 862 "16 May", 0, 0, 0, 0, 0, "16 May", 0, "0016", 0, |
| 863 "April 30", 0, 0, 0, 0, 0, 0, "April 30", 0, 0, |
| 864 "1998", 0, 0, 0, 0, 0, 0, 0, "1998", 0, |
| 865 "1", 0, 0, 0, 0, 0, 0, 0, "0001", 0, |
| 866 "3:00 pm Jan 1, 1997", 0, 0, 0, 0, 0, 0, 0, "0003", "3:00 PM January 1, 1997
", |
| 867 }; |
| 868 |
| 869 // ------------------------------------- |
| 870 |
| 871 /** |
| 872 * Verify the correct behavior when parsing an array of inputs against an |
| 873 * array of patterns, with known results. The results are encoded after |
| 874 * the input strings in each row. |
| 875 */ |
| 876 void |
| 877 DateFormatTest::TestBadInput135a() |
| 878 { |
| 879 UErrorCode status = U_ZERO_ERROR; |
| 880 SimpleDateFormat* dateParse = new SimpleDateFormat(status); |
| 881 if(U_FAILURE(status)) { |
| 882 dataerrln("Failed creating SimpleDateFormat with %s. Quitting test", u_error
Name(status)); |
| 883 delete dateParse; |
| 884 return; |
| 885 } |
| 886 const char* s; |
| 887 UDate date; |
| 888 const uint32_t PF_LENGTH = (int32_t)(sizeof(parseFormats)/sizeof(parseFormats[
0])); |
| 889 const uint32_t INPUT_LENGTH = (int32_t)(sizeof(inputStrings)/sizeof(inputStrin
gs[0])); |
| 890 |
| 891 dateParse->applyPattern("d MMMM, yyyy"); |
| 892 dateParse->adoptTimeZone(TimeZone::createDefault()); |
| 893 s = "not parseable"; |
| 894 UnicodeString thePat; |
| 895 logln(UnicodeString("Trying to parse \"") + s + "\" with " + dateParse->toPatt
ern(thePat)); |
| 896 //try { |
| 897 date = dateParse->parse(s, status); |
| 898 if (U_SUCCESS(status)) |
| 899 errln((UnicodeString)"FAIL: Expected exception during parse"); |
| 900 //} |
| 901 //catch(Exception ex) { |
| 902 else |
| 903 logln((UnicodeString)"Exception during parse: " + (int32_t)status); |
| 904 status = U_ZERO_ERROR; |
| 905 //} |
| 906 for (uint32_t i = 0; i < INPUT_LENGTH; i += (PF_LENGTH + 1)) { |
| 907 ParsePosition parsePosition(0); |
| 908 UnicodeString s( inputStrings[i]); |
| 909 for (uint32_t index = 0; index < PF_LENGTH;++index) { |
| 910 const char* expected = inputStrings[i + 1 + index]; |
| 911 dateParse->applyPattern(parseFormats[index]); |
| 912 dateParse->adoptTimeZone(TimeZone::createDefault()); |
| 913 //try { |
| 914 parsePosition.setIndex(0); |
| 915 date = dateParse->parse(s, parsePosition); |
| 916 if (parsePosition.getIndex() != 0) { |
| 917 UnicodeString s1, s2; |
| 918 s.extract(0, parsePosition.getIndex(), s1); |
| 919 s.extract(parsePosition.getIndex(), s.length(), s2); |
| 920 if (date == 0) { |
| 921 errln((UnicodeString)"ERROR: null result fmt=\"" + |
| 922 parseFormats[index] + |
| 923 "\" pos=" + parsePosition.getIndex() + " " + |
| 924 s1 + "|" + s2); |
| 925 } |
| 926 else { |
| 927 UnicodeString result; |
| 928 ((DateFormat*)dateParse)->format(date, result); |
| 929 logln((UnicodeString)"Parsed \"" + s + "\" using \"" + dateParse->toPa
ttern(thePat) + "\" to: " + result); |
| 930 if (expected == 0) |
| 931 errln((UnicodeString)"FAIL: Expected parse failure"); |
| 932 else if (!(result == expected)) |
| 933 errln(UnicodeString("FAIL: Expected ") + expected); |
| 934 } |
| 935 } |
| 936 else if (expected != 0) { |
| 937 errln(UnicodeString("FAIL: Expected ") + expected + " from \"" + |
| 938 s + "\" with \"" + dateParse->toPattern(thePat) + "\""); |
| 939 } |
| 940 //} |
| 941 //catch(Exception ex) { |
| 942 if (U_FAILURE(status)) |
| 943 errln((UnicodeString)"An exception was thrown during parse: " + (int32_t
)status); |
| 944 //} |
| 945 } |
| 946 } |
| 947 delete dateParse; |
| 948 if (U_FAILURE(status)) |
| 949 errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)st
atus); |
| 950 } |
| 951 |
| 952 // ------------------------------------- |
| 953 |
| 954 /** |
| 955 * Test the parsing of two-digit years. |
| 956 */ |
| 957 void |
| 958 DateFormatTest::TestTwoDigitYear() |
| 959 { |
| 960 UErrorCode ec = U_ZERO_ERROR; |
| 961 SimpleDateFormat fmt("dd/MM/yy", Locale::getUK(), ec); |
| 962 if (U_FAILURE(ec)) { |
| 963 dataerrln("FAIL: SimpleDateFormat constructor - %s", u_errorName(ec)); |
| 964 return; |
| 965 } |
| 966 parse2DigitYear(fmt, "5/6/17", date(117, UCAL_JUNE, 5)); |
| 967 parse2DigitYear(fmt, "4/6/34", date(34, UCAL_JUNE, 4)); |
| 968 } |
| 969 |
| 970 // ------------------------------------- |
| 971 |
| 972 void |
| 973 DateFormatTest::parse2DigitYear(DateFormat& fmt, const char* str, UDate expected
) |
| 974 { |
| 975 UErrorCode status = U_ZERO_ERROR; |
| 976 //try { |
| 977 UDate d = fmt.parse(str, status); |
| 978 UnicodeString thePat; |
| 979 logln(UnicodeString("Parsing \"") + str + "\" with " + ((SimpleDateForma
t*)&fmt)->toPattern(thePat) + |
| 980 " => " + dateToString(d)); |
| 981 if (d != expected) errln((UnicodeString)"FAIL: Expected " + expected); |
| 982 //} |
| 983 //catch(ParseException e) { |
| 984 if (U_FAILURE(status)) |
| 985 errln((UnicodeString)"FAIL: Got exception"); |
| 986 //} |
| 987 } |
| 988 |
| 989 // ------------------------------------- |
| 990 |
| 991 /** |
| 992 * Test the formatting of time zones. |
| 993 */ |
| 994 void |
| 995 DateFormatTest::TestDateFormatZone061() |
| 996 { |
| 997 UErrorCode status = U_ZERO_ERROR; |
| 998 UDate date; |
| 999 DateFormat *formatter; |
| 1000 date= 859248000000.0; |
| 1001 logln((UnicodeString)"Date 1997/3/25 00:00 GMT: " + date); |
| 1002 formatter = new SimpleDateFormat((UnicodeString)"dd-MMM-yyyyy HH:mm", Locale
::getUK(), status); |
| 1003 if(U_FAILURE(status)) { |
| 1004 dataerrln("Failed creating SimpleDateFormat with %s. Quitting test", u_err
orName(status)); |
| 1005 delete formatter; |
| 1006 return; |
| 1007 } |
| 1008 formatter->adoptTimeZone(TimeZone::createTimeZone("GMT")); |
| 1009 UnicodeString temp; formatter->format(date, temp); |
| 1010 logln((UnicodeString)"Formatted in GMT to: " + temp); |
| 1011 //try { |
| 1012 UDate tempDate = formatter->parse(temp, status); |
| 1013 logln((UnicodeString)"Parsed to: " + dateToString(tempDate)); |
| 1014 if (tempDate != date) errln((UnicodeString)"FAIL: Expected " + dateToStr
ing(date)); |
| 1015 //} |
| 1016 //catch(Throwable t) { |
| 1017 if (U_FAILURE(status)) |
| 1018 errln((UnicodeString)"Date Formatter throws: " + (int32_t)status); |
| 1019 //} |
| 1020 delete formatter; |
| 1021 } |
| 1022 |
| 1023 // ------------------------------------- |
| 1024 |
| 1025 /** |
| 1026 * Test the formatting of time zones. |
| 1027 */ |
| 1028 void |
| 1029 DateFormatTest::TestDateFormatZone146() |
| 1030 { |
| 1031 TimeZone *saveDefault = TimeZone::createDefault(); |
| 1032 |
| 1033 //try { |
| 1034 TimeZone *thedefault = TimeZone::createTimeZone("GMT"); |
| 1035 TimeZone::setDefault(*thedefault); |
| 1036 // java.util.Locale.setDefault(new java.util.Locale("ar", "", "")); |
| 1037 |
| 1038 // check to be sure... its GMT all right |
| 1039 TimeZone *testdefault = TimeZone::createDefault(); |
| 1040 UnicodeString testtimezone; |
| 1041 testdefault->getID(testtimezone); |
| 1042 if (testtimezone == "GMT") |
| 1043 logln("Test timezone = " + testtimezone); |
| 1044 else |
| 1045 errln("Test timezone should be GMT, not " + testtimezone); |
| 1046 |
| 1047 UErrorCode status = U_ZERO_ERROR; |
| 1048 // now try to use the default GMT time zone |
| 1049 GregorianCalendar *greenwichcalendar = |
| 1050 new GregorianCalendar(1997, 3, 4, 23, 0, status); |
| 1051 if (U_FAILURE(status)) { |
| 1052 dataerrln("Fail new GregorianCalendar: %s", u_errorName(status)); |
| 1053 } else { |
| 1054 //*****************************greenwichcalendar.setTimeZone(TimeZon
e.getDefault()); |
| 1055 //greenwichcalendar.set(1997, 3, 4, 23, 0); |
| 1056 // try anything to set hour to 23:00 !!! |
| 1057 greenwichcalendar->set(UCAL_HOUR_OF_DAY, 23); |
| 1058 // get time |
| 1059 UDate greenwichdate = greenwichcalendar->getTime(status); |
| 1060 // format every way |
| 1061 UnicodeString DATA [] = { |
| 1062 UnicodeString("simple format: "), UnicodeString("04/04/97 23:00
GMT+00:00"), |
| 1063 UnicodeString("MM/dd/yy HH:mm z"), |
| 1064 UnicodeString("full format: "), UnicodeString("Friday, April
4, 1997 11:00:00 o'clock PM GMT+00:00"), |
| 1065 UnicodeString("EEEE, MMMM d, yyyy h:mm:ss 'o''clock' a z"), |
| 1066 UnicodeString("long format: "), UnicodeString("April 4, 1997
11:00:00 PM GMT+00:00"), |
| 1067 UnicodeString("MMMM d, yyyy h:mm:ss a z"), |
| 1068 UnicodeString("default format: "), UnicodeString("04-Apr-97 11:0
0:00 PM"), |
| 1069 UnicodeString("dd-MMM-yy h:mm:ss a"), |
| 1070 UnicodeString("short format: "), UnicodeString("4/4/97 11:00 P
M"), |
| 1071 UnicodeString("M/d/yy h:mm a") |
| 1072 }; |
| 1073 int32_t DATA_length = (int32_t)(sizeof(DATA) / sizeof(DATA[0])); |
| 1074 |
| 1075 for (int32_t i=0; i<DATA_length; i+=3) { |
| 1076 DateFormat *fmt = new SimpleDateFormat(DATA[i+2], Locale::getEng
lish(), status); |
| 1077 if(failure(status, "new SimpleDateFormat")) break; |
| 1078 fmt->setCalendar(*greenwichcalendar); |
| 1079 UnicodeString result; |
| 1080 result = fmt->format(greenwichdate, result); |
| 1081 logln(DATA[i] + result); |
| 1082 if (result != DATA[i+1]) |
| 1083 errln("FAIL: Expected " + DATA[i+1] + ", got " + result); |
| 1084 delete fmt; |
| 1085 } |
| 1086 } |
| 1087 //} |
| 1088 //finally { |
| 1089 TimeZone::adoptDefault(saveDefault); |
| 1090 //} |
| 1091 delete testdefault; |
| 1092 delete greenwichcalendar; |
| 1093 delete thedefault; |
| 1094 |
| 1095 |
| 1096 } |
| 1097 |
| 1098 // ------------------------------------- |
| 1099 |
| 1100 /** |
| 1101 * Test the formatting of dates in different locales. |
| 1102 */ |
| 1103 void |
| 1104 DateFormatTest::TestLocaleDateFormat() // Bug 495 |
| 1105 { |
| 1106 UDate testDate = date(97, UCAL_SEPTEMBER, 15); |
| 1107 DateFormat *dfFrench = DateFormat::createDateTimeInstance(DateFormat::FULL, |
| 1108 DateFormat::FULL, Locale::getFrench()); |
| 1109 DateFormat *dfUS = DateFormat::createDateTimeInstance(DateFormat::FULL, |
| 1110 DateFormat::FULL, Locale::getUS()); |
| 1111 UnicodeString expectedFRENCH ( "lundi 15 septembre 1997 00:00:00 heure avanc
\\u00E9e du Pacifique", -1, US_INV ); |
| 1112 expectedFRENCH = expectedFRENCH.unescape(); |
| 1113 //UnicodeString expectedUS ( "Monday, September 15, 1997 12:00:00 o'clock AM
PDT" ); |
| 1114 UnicodeString expectedUS ( "Monday, September 15, 1997 12:00:00 AM Pacific D
aylight Time" ); |
| 1115 logln((UnicodeString)"Date set to : " + dateToString(testDate)); |
| 1116 UnicodeString out; |
| 1117 if (dfUS == NULL || dfFrench == NULL){ |
| 1118 dataerrln("Error calling DateFormat::createDateTimeInstance)"); |
| 1119 delete dfUS; |
| 1120 delete dfFrench; |
| 1121 return; |
| 1122 } |
| 1123 |
| 1124 dfFrench->format(testDate, out); |
| 1125 logln((UnicodeString)"Date Formated with French Locale " + out); |
| 1126 if (!(out == expectedFRENCH)) |
| 1127 errln((UnicodeString)"FAIL: Expected " + expectedFRENCH); |
| 1128 out.truncate(0); |
| 1129 dfUS->format(testDate, out); |
| 1130 logln((UnicodeString)"Date Formated with US Locale " + out); |
| 1131 if (!(out == expectedUS)) |
| 1132 errln((UnicodeString)"FAIL: Expected " + expectedUS); |
| 1133 delete dfUS; |
| 1134 delete dfFrench; |
| 1135 } |
| 1136 |
| 1137 /** |
| 1138 * Test DateFormat(Calendar) API |
| 1139 */ |
| 1140 void DateFormatTest::TestDateFormatCalendar() { |
| 1141 DateFormat *date=0, *time=0, *full=0; |
| 1142 Calendar *cal=0; |
| 1143 UnicodeString str; |
| 1144 ParsePosition pos; |
| 1145 UDate when; |
| 1146 UErrorCode ec = U_ZERO_ERROR; |
| 1147 |
| 1148 /* Create a formatter for date fields. */ |
| 1149 date = DateFormat::createDateInstance(DateFormat::kShort, Locale::getUS()); |
| 1150 if (date == NULL) { |
| 1151 dataerrln("FAIL: createDateInstance failed"); |
| 1152 goto FAIL; |
| 1153 } |
| 1154 |
| 1155 /* Create a formatter for time fields. */ |
| 1156 time = DateFormat::createTimeInstance(DateFormat::kShort, Locale::getUS()); |
| 1157 if (time == NULL) { |
| 1158 errln("FAIL: createTimeInstance failed"); |
| 1159 goto FAIL; |
| 1160 } |
| 1161 |
| 1162 /* Create a full format for output */ |
| 1163 full = DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFu
ll, |
| 1164 Locale::getUS()); |
| 1165 if (full == NULL) { |
| 1166 errln("FAIL: createInstance failed"); |
| 1167 goto FAIL; |
| 1168 } |
| 1169 |
| 1170 /* Create a calendar */ |
| 1171 cal = Calendar::createInstance(Locale::getUS(), ec); |
| 1172 if (cal == NULL || U_FAILURE(ec)) { |
| 1173 errln((UnicodeString)"FAIL: Calendar::createInstance failed with " + |
| 1174 u_errorName(ec)); |
| 1175 goto FAIL; |
| 1176 } |
| 1177 |
| 1178 /* Parse the date */ |
| 1179 cal->clear(); |
| 1180 str = UnicodeString("4/5/2001", ""); |
| 1181 pos.setIndex(0); |
| 1182 date->parse(str, *cal, pos); |
| 1183 if (pos.getIndex() != str.length()) { |
| 1184 errln((UnicodeString)"FAIL: DateFormat::parse(4/5/2001) failed at " + |
| 1185 pos.getIndex()); |
| 1186 goto FAIL; |
| 1187 } |
| 1188 |
| 1189 /* Parse the time */ |
| 1190 str = UnicodeString("5:45 PM", ""); |
| 1191 pos.setIndex(0); |
| 1192 time->parse(str, *cal, pos); |
| 1193 if (pos.getIndex() != str.length()) { |
| 1194 errln((UnicodeString)"FAIL: DateFormat::parse(17:45) failed at " + |
| 1195 pos.getIndex()); |
| 1196 goto FAIL; |
| 1197 } |
| 1198 |
| 1199 /* Check result */ |
| 1200 when = cal->getTime(ec); |
| 1201 if (U_FAILURE(ec)) { |
| 1202 errln((UnicodeString)"FAIL: cal->getTime() failed with " + u_errorName(e
c)); |
| 1203 goto FAIL; |
| 1204 } |
| 1205 str.truncate(0); |
| 1206 full->format(when, str); |
| 1207 // Thursday, April 5, 2001 5:45:00 PM PDT 986517900000 |
| 1208 if (when == 986517900000.0) { |
| 1209 logln("Ok: Parsed result: " + str); |
| 1210 } else { |
| 1211 errln("FAIL: Parsed result: " + str + ", exp 4/5/2001 5:45 PM"); |
| 1212 } |
| 1213 |
| 1214 FAIL: |
| 1215 delete date; |
| 1216 delete time; |
| 1217 delete full; |
| 1218 delete cal; |
| 1219 } |
| 1220 |
| 1221 /** |
| 1222 * Test DateFormat's parsing of space characters. See jitterbug 1916. |
| 1223 */ |
| 1224 void DateFormatTest::TestSpaceParsing() { |
| 1225 const char* DATA[] = { |
| 1226 "yyyy MM dd HH:mm:ss", |
| 1227 |
| 1228 // pattern, input, expected parse or NULL if expect parse failure |
| 1229 "MMMM d yy", " 04 05 06", NULL, // MMMM wants Apr/April |
| 1230 NULL, "04 05 06", NULL, |
| 1231 "MM d yy", " 04 05 06", "2006 04 05 00:00:00", |
| 1232 NULL, "04 05 06", "2006 04 05 00:00:00", |
| 1233 "MMMM d yy", " Apr 05 06", "2006 04 05 00:00:00", |
| 1234 NULL, "Apr 05 06", "2006 04 05 00:00:00", |
| 1235 }; |
| 1236 const int32_t DATA_len = sizeof(DATA)/sizeof(DATA[0]); |
| 1237 |
| 1238 expectParse(DATA, DATA_len, Locale("en")); |
| 1239 } |
| 1240 |
| 1241 /** |
| 1242 * Test handling of "HHmmss" pattern. |
| 1243 */ |
| 1244 void DateFormatTest::TestExactCountFormat() { |
| 1245 const char* DATA[] = { |
| 1246 "yyyy MM dd HH:mm:ss", |
| 1247 |
| 1248 // pattern, input, expected parse or NULL if expect parse failure |
| 1249 "HHmmss", "123456", "1970 01 01 12:34:56", |
| 1250 NULL, "12345", "1970 01 01 01:23:45", |
| 1251 NULL, "1234", NULL, |
| 1252 NULL, "00-05", NULL, |
| 1253 NULL, "12-34", NULL, |
| 1254 NULL, "00+05", NULL, |
| 1255 "ahhmm", "PM730", "1970 01 01 19:30:00", |
| 1256 }; |
| 1257 const int32_t DATA_len = sizeof(DATA)/sizeof(DATA[0]); |
| 1258 |
| 1259 expectParse(DATA, DATA_len, Locale("en")); |
| 1260 } |
| 1261 |
| 1262 /** |
| 1263 * Test handling of white space. |
| 1264 */ |
| 1265 void DateFormatTest::TestWhiteSpaceParsing() { |
| 1266 const char* DATA[] = { |
| 1267 "yyyy MM dd", |
| 1268 |
| 1269 // pattern, input, expected parse or null if expect parse failure |
| 1270 |
| 1271 // Pattern space run should parse input text space run |
| 1272 "MM d yy", " 04 01 03", "2003 04 01", |
| 1273 NULL, " 04 01 03 ", "2003 04 01", |
| 1274 }; |
| 1275 const int32_t DATA_len = sizeof(DATA)/sizeof(DATA[0]); |
| 1276 |
| 1277 expectParse(DATA, DATA_len, Locale("en")); |
| 1278 } |
| 1279 |
| 1280 |
| 1281 void DateFormatTest::TestInvalidPattern() { |
| 1282 UErrorCode ec = U_ZERO_ERROR; |
| 1283 SimpleDateFormat f(UnicodeString("Yesterday"), ec); |
| 1284 if (U_FAILURE(ec)) { |
| 1285 dataerrln("Fail construct SimpleDateFormat: %s", u_errorName(ec)); |
| 1286 return; |
| 1287 } |
| 1288 UnicodeString out; |
| 1289 FieldPosition pos; |
| 1290 f.format((UDate)0, out, pos); |
| 1291 logln(out); |
| 1292 // The bug is that the call to format() will crash. By not |
| 1293 // crashing, the test passes. |
| 1294 } |
| 1295 |
| 1296 void DateFormatTest::TestGreekMay() { |
| 1297 UErrorCode ec = U_ZERO_ERROR; |
| 1298 UDate date = -9896080848000.0; |
| 1299 SimpleDateFormat fmt("EEEE, dd MMMM yyyy h:mm:ss a", Locale("el", "", ""), e
c); |
| 1300 if (U_FAILURE(ec)) { |
| 1301 dataerrln("Fail construct SimpleDateFormat: %s", u_errorName(ec)); |
| 1302 return; |
| 1303 } |
| 1304 UnicodeString str; |
| 1305 fmt.format(date, str); |
| 1306 ParsePosition pos(0); |
| 1307 UDate d2 = fmt.parse(str, pos); |
| 1308 if (date != d2) { |
| 1309 errln("FAIL: unable to parse strings where case-folding changes length")
; |
| 1310 } |
| 1311 } |
| 1312 |
| 1313 void DateFormatTest::TestStandAloneMonths() |
| 1314 { |
| 1315 const char *EN_DATA[] = { |
| 1316 "yyyy MM dd HH:mm:ss", |
| 1317 |
| 1318 "yyyy LLLL dd H:mm:ss", "fp", "2004 03 10 16:36:31", "2004 March 10 16:3
6:31", "2004 03 10 16:36:31", |
| 1319 "yyyy LLL dd H:mm:ss", "fp", "2004 03 10 16:36:31", "2004 Mar 10 16:36:
31", "2004 03 10 16:36:31", |
| 1320 "yyyy LLLL dd H:mm:ss", "F", "2004 03 10 16:36:31", "2004 March 10 16:3
6:31", |
| 1321 "yyyy LLL dd H:mm:ss", "pf", "2004 Mar 10 16:36:31", "2004 03 10 16:36:
31", "2004 Mar 10 16:36:31", |
| 1322 |
| 1323 "LLLL", "fp", "1970 01 01 0:00:00", "January", "1970 01 01 0:00:00", |
| 1324 "LLLL", "fp", "1970 02 01 0:00:00", "February", "1970 02 01 0:00:00", |
| 1325 "LLLL", "fp", "1970 03 01 0:00:00", "March", "1970 03 01 0:00:00", |
| 1326 "LLLL", "fp", "1970 04 01 0:00:00", "April", "1970 04 01 0:00:00", |
| 1327 "LLLL", "fp", "1970 05 01 0:00:00", "May", "1970 05 01 0:00:00", |
| 1328 "LLLL", "fp", "1970 06 01 0:00:00", "June", "1970 06 01 0:00:00", |
| 1329 "LLLL", "fp", "1970 07 01 0:00:00", "July", "1970 07 01 0:00:00", |
| 1330 "LLLL", "fp", "1970 08 01 0:00:00", "August", "1970 08 01 0:00:00", |
| 1331 "LLLL", "fp", "1970 09 01 0:00:00", "September", "1970 09 01 0:00:00", |
| 1332 "LLLL", "fp", "1970 10 01 0:00:00", "October", "1970 10 01 0:00:00", |
| 1333 "LLLL", "fp", "1970 11 01 0:00:00", "November", "1970 11 01 0:00:00", |
| 1334 "LLLL", "fp", "1970 12 01 0:00:00", "December", "1970 12 01 0:00:00", |
| 1335 |
| 1336 "LLL", "fp", "1970 01 01 0:00:00", "Jan", "1970 01 01 0:00:00", |
| 1337 "LLL", "fp", "1970 02 01 0:00:00", "Feb", "1970 02 01 0:00:00", |
| 1338 "LLL", "fp", "1970 03 01 0:00:00", "Mar", "1970 03 01 0:00:00", |
| 1339 "LLL", "fp", "1970 04 01 0:00:00", "Apr", "1970 04 01 0:00:00", |
| 1340 "LLL", "fp", "1970 05 01 0:00:00", "May", "1970 05 01 0:00:00", |
| 1341 "LLL", "fp", "1970 06 01 0:00:00", "Jun", "1970 06 01 0:00:00", |
| 1342 "LLL", "fp", "1970 07 01 0:00:00", "Jul", "1970 07 01 0:00:00", |
| 1343 "LLL", "fp", "1970 08 01 0:00:00", "Aug", "1970 08 01 0:00:00", |
| 1344 "LLL", "fp", "1970 09 01 0:00:00", "Sep", "1970 09 01 0:00:00", |
| 1345 "LLL", "fp", "1970 10 01 0:00:00", "Oct", "1970 10 01 0:00:00", |
| 1346 "LLL", "fp", "1970 11 01 0:00:00", "Nov", "1970 11 01 0:00:00", |
| 1347 "LLL", "fp", "1970 12 01 0:00:00", "Dec", "1970 12 01 0:00:00", |
| 1348 }; |
| 1349 |
| 1350 const char *CS_DATA[] = { |
| 1351 "yyyy MM dd HH:mm:ss", |
| 1352 |
| 1353 "yyyy LLLL dd H:mm:ss", "fp", "2004 04 10 16:36:31", "2004 duben 10 16:3
6:31", "2004 04 10 16:36:31", |
| 1354 "yyyy MMMM dd H:mm:ss", "fp", "2004 04 10 16:36:31", "2004 dubna 10 16:3
6:31", "2004 04 10 16:36:31", |
| 1355 "yyyy LLL dd H:mm:ss", "fp", "2004 04 10 16:36:31", "2004 4. 10 16:36:3
1", "2004 04 10 16:36:31", |
| 1356 "yyyy LLLL dd H:mm:ss", "F", "2004 04 10 16:36:31", "2004 duben 10 16:3
6:31", |
| 1357 "yyyy MMMM dd H:mm:ss", "F", "2004 04 10 16:36:31", "2004 dubna 10 16:3
6:31", |
| 1358 "yyyy LLLL dd H:mm:ss", "pf", "2004 duben 10 16:36:31", "2004 04 10 16:3
6:31", "2004 duben 10 16:36:31", |
| 1359 "yyyy MMMM dd H:mm:ss", "pf", "2004 dubna 10 16:36:31", "2004 04 10 16:3
6:31", "2004 dubna 10 16:36:31", |
| 1360 |
| 1361 "LLLL", "fp", "1970 01 01 0:00:00", "leden", "1970 01 01 0
:00:00", |
| 1362 "LLLL", "fp", "1970 02 01 0:00:00", "\\u00FAnor", "1970 02 01
0:00:00", |
| 1363 "LLLL", "fp", "1970 03 01 0:00:00", "b\\u0159ezen", "1970 03 01
0:00:00", |
| 1364 "LLLL", "fp", "1970 04 01 0:00:00", "duben", "1970 04 01 0
:00:00", |
| 1365 "LLLL", "fp", "1970 05 01 0:00:00", "kv\\u011Bten", "1970 05 01
0:00:00", |
| 1366 "LLLL", "fp", "1970 06 01 0:00:00", "\\u010Derven", "1970 06 01
0:00:00", |
| 1367 "LLLL", "fp", "1970 07 01 0:00:00", "\\u010Dervenec", "1970 07 01
0:00:00", |
| 1368 "LLLL", "fp", "1970 08 01 0:00:00", "srpen", "1970 08 01 0
:00:00", |
| 1369 "LLLL", "fp", "1970 09 01 0:00:00", "z\\u00E1\\u0159\\u00ED", "1970 09 0
1 0:00:00", |
| 1370 "LLLL", "fp", "1970 10 01 0:00:00", "\\u0159\\u00EDjen", "1970 10 01
0:00:00", |
| 1371 "LLLL", "fp", "1970 11 01 0:00:00", "listopad", "1970 11 01 0
:00:00", |
| 1372 "LLLL", "fp", "1970 12 01 0:00:00", "prosinec", "1970 12 01 0
:00:00", |
| 1373 |
| 1374 "LLL", "fp", "1970 01 01 0:00:00", "1.", "1970 01 01 0:00:00", |
| 1375 "LLL", "fp", "1970 02 01 0:00:00", "2.", "1970 02 01 0:00:00", |
| 1376 "LLL", "fp", "1970 03 01 0:00:00", "3.", "1970 03 01 0:00:00", |
| 1377 "LLL", "fp", "1970 04 01 0:00:00", "4.", "1970 04 01 0:00:00", |
| 1378 "LLL", "fp", "1970 05 01 0:00:00", "5.", "1970 05 01 0:00:00", |
| 1379 "LLL", "fp", "1970 06 01 0:00:00", "6.", "1970 06 01 0:00:00", |
| 1380 "LLL", "fp", "1970 07 01 0:00:00", "7.", "1970 07 01 0:00:00", |
| 1381 "LLL", "fp", "1970 08 01 0:00:00", "8.", "1970 08 01 0:00:00", |
| 1382 "LLL", "fp", "1970 09 01 0:00:00", "9.", "1970 09 01 0:00:00", |
| 1383 "LLL", "fp", "1970 10 01 0:00:00", "10.", "1970 10 01 0:00:00", |
| 1384 "LLL", "fp", "1970 11 01 0:00:00", "11.", "1970 11 01 0:00:00", |
| 1385 "LLL", "fp", "1970 12 01 0:00:00", "12.", "1970 12 01 0:00:00", |
| 1386 }; |
| 1387 |
| 1388 expect(EN_DATA, ARRAY_SIZE(EN_DATA), Locale("en", "", "")); |
| 1389 expect(CS_DATA, ARRAY_SIZE(CS_DATA), Locale("cs", "", "")); |
| 1390 } |
| 1391 |
| 1392 void DateFormatTest::TestStandAloneDays() |
| 1393 { |
| 1394 const char *EN_DATA[] = { |
| 1395 "yyyy MM dd HH:mm:ss", |
| 1396 |
| 1397 "cccc", "fp", "1970 01 04 0:00:00", "Sunday", "1970 01 04 0:00:00", |
| 1398 "cccc", "fp", "1970 01 05 0:00:00", "Monday", "1970 01 05 0:00:00", |
| 1399 "cccc", "fp", "1970 01 06 0:00:00", "Tuesday", "1970 01 06 0:00:00", |
| 1400 "cccc", "fp", "1970 01 07 0:00:00", "Wednesday", "1970 01 07 0:00:00", |
| 1401 "cccc", "fp", "1970 01 01 0:00:00", "Thursday", "1970 01 01 0:00:00", |
| 1402 "cccc", "fp", "1970 01 02 0:00:00", "Friday", "1970 01 02 0:00:00", |
| 1403 "cccc", "fp", "1970 01 03 0:00:00", "Saturday", "1970 01 03 0:00:00", |
| 1404 |
| 1405 "ccc", "fp", "1970 01 04 0:00:00", "Sun", "1970 01 04 0:00:00", |
| 1406 "ccc", "fp", "1970 01 05 0:00:00", "Mon", "1970 01 05 0:00:00", |
| 1407 "ccc", "fp", "1970 01 06 0:00:00", "Tue", "1970 01 06 0:00:00", |
| 1408 "ccc", "fp", "1970 01 07 0:00:00", "Wed", "1970 01 07 0:00:00", |
| 1409 "ccc", "fp", "1970 01 01 0:00:00", "Thu", "1970 01 01 0:00:00", |
| 1410 "ccc", "fp", "1970 01 02 0:00:00", "Fri", "1970 01 02 0:00:00", |
| 1411 "ccc", "fp", "1970 01 03 0:00:00", "Sat", "1970 01 03 0:00:00", |
| 1412 }; |
| 1413 |
| 1414 const char *CS_DATA[] = { |
| 1415 "yyyy MM dd HH:mm:ss", |
| 1416 |
| 1417 "cccc", "fp", "1970 01 04 0:00:00", "ned\\u011Ble", "1970 01 04 0:
00:00", |
| 1418 "cccc", "fp", "1970 01 05 0:00:00", "pond\\u011Bl\\u00ED", "1970 01 05 0
:00:00", |
| 1419 "cccc", "fp", "1970 01 06 0:00:00", "\\u00FAter\\u00FD", "1970 01 06 0
:00:00", |
| 1420 "cccc", "fp", "1970 01 07 0:00:00", "st\\u0159eda", "1970 01 07 0:
00:00", |
| 1421 "cccc", "fp", "1970 01 01 0:00:00", "\\u010Dtvrtek", "1970 01 01 0:
00:00", |
| 1422 "cccc", "fp", "1970 01 02 0:00:00", "p\\u00E1tek", "1970 01 02 0:
00:00", |
| 1423 "cccc", "fp", "1970 01 03 0:00:00", "sobota", "1970 01 03 0:0
0:00", |
| 1424 |
| 1425 "ccc", "fp", "1970 01 04 0:00:00", "ne", "1970 01 04 0:00:00", |
| 1426 "ccc", "fp", "1970 01 05 0:00:00", "po", "1970 01 05 0:00:00", |
| 1427 "ccc", "fp", "1970 01 06 0:00:00", "\\u00FAt", "1970 01 06 0:00:00", |
| 1428 "ccc", "fp", "1970 01 07 0:00:00", "st", "1970 01 07 0:00:00", |
| 1429 "ccc", "fp", "1970 01 01 0:00:00", "\\u010Dt", "1970 01 01 0:00:00", |
| 1430 "ccc", "fp", "1970 01 02 0:00:00", "p\\u00E1", "1970 01 02 0:00:00", |
| 1431 "ccc", "fp", "1970 01 03 0:00:00", "so", "1970 01 03 0:00:00", |
| 1432 }; |
| 1433 |
| 1434 expect(EN_DATA, ARRAY_SIZE(EN_DATA), Locale("en", "", "")); |
| 1435 expect(CS_DATA, ARRAY_SIZE(CS_DATA), Locale("cs", "", "")); |
| 1436 } |
| 1437 |
| 1438 void DateFormatTest::TestNarrowNames() |
| 1439 { |
| 1440 const char *EN_DATA[] = { |
| 1441 "yyyy MM dd HH:mm:ss", |
| 1442 |
| 1443 "yyyy MMMMM dd H:mm:ss", "2004 03 10 16:36:31", "2004 M 10 16:36:31"
, |
| 1444 "yyyy LLLLL dd H:mm:ss", "2004 03 10 16:36:31", "2004 M 10 16:36:31
", |
| 1445 |
| 1446 "MMMMM", "1970 01 01 0:00:00", "J", |
| 1447 "MMMMM", "1970 02 01 0:00:00", "F", |
| 1448 "MMMMM", "1970 03 01 0:00:00", "M", |
| 1449 "MMMMM", "1970 04 01 0:00:00", "A", |
| 1450 "MMMMM", "1970 05 01 0:00:00", "M", |
| 1451 "MMMMM", "1970 06 01 0:00:00", "J", |
| 1452 "MMMMM", "1970 07 01 0:00:00", "J", |
| 1453 "MMMMM", "1970 08 01 0:00:00", "A", |
| 1454 "MMMMM", "1970 09 01 0:00:00", "S", |
| 1455 "MMMMM", "1970 10 01 0:00:00", "O", |
| 1456 "MMMMM", "1970 11 01 0:00:00", "N", |
| 1457 "MMMMM", "1970 12 01 0:00:00", "D", |
| 1458 |
| 1459 "LLLLL", "1970 01 01 0:00:00", "J", |
| 1460 "LLLLL", "1970 02 01 0:00:00", "F", |
| 1461 "LLLLL", "1970 03 01 0:00:00", "M", |
| 1462 "LLLLL", "1970 04 01 0:00:00", "A", |
| 1463 "LLLLL", "1970 05 01 0:00:00", "M", |
| 1464 "LLLLL", "1970 06 01 0:00:00", "J", |
| 1465 "LLLLL", "1970 07 01 0:00:00", "J", |
| 1466 "LLLLL", "1970 08 01 0:00:00", "A", |
| 1467 "LLLLL", "1970 09 01 0:00:00", "S", |
| 1468 "LLLLL", "1970 10 01 0:00:00", "O", |
| 1469 "LLLLL", "1970 11 01 0:00:00", "N", |
| 1470 "LLLLL", "1970 12 01 0:00:00", "D", |
| 1471 |
| 1472 "EEEEE", "1970 01 04 0:00:00", "S", |
| 1473 "EEEEE", "1970 01 05 0:00:00", "M", |
| 1474 "EEEEE", "1970 01 06 0:00:00", "T", |
| 1475 "EEEEE", "1970 01 07 0:00:00", "W", |
| 1476 "EEEEE", "1970 01 01 0:00:00", "T", |
| 1477 "EEEEE", "1970 01 02 0:00:00", "F", |
| 1478 "EEEEE", "1970 01 03 0:00:00", "S", |
| 1479 |
| 1480 "ccccc", "1970 01 04 0:00:00", "S", |
| 1481 "ccccc", "1970 01 05 0:00:00", "M", |
| 1482 "ccccc", "1970 01 06 0:00:00", "T", |
| 1483 "ccccc", "1970 01 07 0:00:00", "W", |
| 1484 "ccccc", "1970 01 01 0:00:00", "T", |
| 1485 "ccccc", "1970 01 02 0:00:00", "F", |
| 1486 "ccccc", "1970 01 03 0:00:00", "S", |
| 1487 }; |
| 1488 |
| 1489 const char *CS_DATA[] = { |
| 1490 "yyyy MM dd HH:mm:ss", |
| 1491 |
| 1492 "yyyy LLLLL dd H:mm:ss", "2004 04 10 16:36:31", "2004 d 10 16:36:31"
, |
| 1493 "yyyy MMMMM dd H:mm:ss", "2004 04 10 16:36:31", "2004 d 10 16:36:31"
, |
| 1494 |
| 1495 "MMMMM", "1970 01 01 0:00:00", "l", |
| 1496 "MMMMM", "1970 02 01 0:00:00", "\\u00FA", |
| 1497 "MMMMM", "1970 03 01 0:00:00", "b", |
| 1498 "MMMMM", "1970 04 01 0:00:00", "d", |
| 1499 "MMMMM", "1970 05 01 0:00:00", "k", |
| 1500 "MMMMM", "1970 06 01 0:00:00", "\\u010D", |
| 1501 "MMMMM", "1970 07 01 0:00:00", "\\u010D", |
| 1502 "MMMMM", "1970 08 01 0:00:00", "s", |
| 1503 "MMMMM", "1970 09 01 0:00:00", "z", |
| 1504 "MMMMM", "1970 10 01 0:00:00", "\\u0159", |
| 1505 "MMMMM", "1970 11 01 0:00:00", "l", |
| 1506 "MMMMM", "1970 12 01 0:00:00", "p", |
| 1507 |
| 1508 "LLLLL", "1970 01 01 0:00:00", "l", |
| 1509 "LLLLL", "1970 02 01 0:00:00", "\\u00FA", |
| 1510 "LLLLL", "1970 03 01 0:00:00", "b", |
| 1511 "LLLLL", "1970 04 01 0:00:00", "d", |
| 1512 "LLLLL", "1970 05 01 0:00:00", "k", |
| 1513 "LLLLL", "1970 06 01 0:00:00", "\\u010D", |
| 1514 "LLLLL", "1970 07 01 0:00:00", "\\u010D", |
| 1515 "LLLLL", "1970 08 01 0:00:00", "s", |
| 1516 "LLLLL", "1970 09 01 0:00:00", "z", |
| 1517 "LLLLL", "1970 10 01 0:00:00", "\\u0159", |
| 1518 "LLLLL", "1970 11 01 0:00:00", "l", |
| 1519 "LLLLL", "1970 12 01 0:00:00", "p", |
| 1520 |
| 1521 "EEEEE", "1970 01 04 0:00:00", "N", |
| 1522 "EEEEE", "1970 01 05 0:00:00", "P", |
| 1523 "EEEEE", "1970 01 06 0:00:00", "\\u00DA", |
| 1524 "EEEEE", "1970 01 07 0:00:00", "S", |
| 1525 "EEEEE", "1970 01 01 0:00:00", "\\u010C", |
| 1526 "EEEEE", "1970 01 02 0:00:00", "P", |
| 1527 "EEEEE", "1970 01 03 0:00:00", "S", |
| 1528 |
| 1529 "ccccc", "1970 01 04 0:00:00", "N", |
| 1530 "ccccc", "1970 01 05 0:00:00", "P", |
| 1531 "ccccc", "1970 01 06 0:00:00", "\\u00DA", |
| 1532 "ccccc", "1970 01 07 0:00:00", "S", |
| 1533 "ccccc", "1970 01 01 0:00:00", "\\u010C", |
| 1534 "ccccc", "1970 01 02 0:00:00", "P", |
| 1535 "ccccc", "1970 01 03 0:00:00", "S", |
| 1536 }; |
| 1537 |
| 1538 expectFormat(EN_DATA, ARRAY_SIZE(EN_DATA), Locale("en", "", "")); |
| 1539 expectFormat(CS_DATA, ARRAY_SIZE(CS_DATA), Locale("cs", "", "")); |
| 1540 } |
| 1541 |
| 1542 void DateFormatTest::TestEras() |
| 1543 { |
| 1544 const char *EN_DATA[] = { |
| 1545 "yyyy MM dd", |
| 1546 |
| 1547 "MMMM dd yyyy G", "fp", "1951 07 17", "July 17 1951 AD", "19
51 07 17", |
| 1548 "MMMM dd yyyy GG", "fp", "1951 07 17", "July 17 1951 AD", "19
51 07 17", |
| 1549 "MMMM dd yyyy GGG", "fp", "1951 07 17", "July 17 1951 AD", "19
51 07 17", |
| 1550 "MMMM dd yyyy GGGG", "fp", "1951 07 17", "July 17 1951 Anno Domini", "19
51 07 17", |
| 1551 |
| 1552 "MMMM dd yyyy G", "fp", "-438 07 17", "July 17 0439 BC", "
-438 07 17", |
| 1553 "MMMM dd yyyy GG", "fp", "-438 07 17", "July 17 0439 BC", "
-438 07 17", |
| 1554 "MMMM dd yyyy GGG", "fp", "-438 07 17", "July 17 0439 BC", "
-438 07 17", |
| 1555 "MMMM dd yyyy GGGG", "fp", "-438 07 17", "July 17 0439 Before Christ", "
-438 07 17", |
| 1556 }; |
| 1557 |
| 1558 expect(EN_DATA, ARRAY_SIZE(EN_DATA), Locale("en", "", "")); |
| 1559 } |
| 1560 |
| 1561 void DateFormatTest::TestQuarters() |
| 1562 { |
| 1563 const char *EN_DATA[] = { |
| 1564 "yyyy MM dd", |
| 1565 |
| 1566 "Q", "fp", "1970 01 01", "1", "1970 01 01", |
| 1567 "QQ", "fp", "1970 04 01", "02", "1970 04 01", |
| 1568 "QQQ", "fp", "1970 07 01", "Q3", "1970 07 01", |
| 1569 "QQQQ", "fp", "1970 10 01", "4th quarter", "1970 10 01", |
| 1570 |
| 1571 "q", "fp", "1970 01 01", "1", "1970 01 01", |
| 1572 "qq", "fp", "1970 04 01", "02", "1970 04 01", |
| 1573 "qqq", "fp", "1970 07 01", "Q3", "1970 07 01", |
| 1574 "qqqq", "fp", "1970 10 01", "4th quarter", "1970 10 01", |
| 1575 }; |
| 1576 |
| 1577 expect(EN_DATA, ARRAY_SIZE(EN_DATA), Locale("en", "", "")); |
| 1578 } |
| 1579 |
| 1580 /** |
| 1581 * Test parsing. Input is an array that starts with the following |
| 1582 * header: |
| 1583 * |
| 1584 * [0] = pattern string to parse [i+2] with |
| 1585 * |
| 1586 * followed by test cases, each of which is 3 array elements: |
| 1587 * |
| 1588 * [i] = pattern, or NULL to reuse prior pattern |
| 1589 * [i+1] = input string |
| 1590 * [i+2] = expected parse result (parsed with pattern [0]) |
| 1591 * |
| 1592 * If expect parse failure, then [i+2] should be NULL. |
| 1593 */ |
| 1594 void DateFormatTest::expectParse(const char** data, int32_t data_length, |
| 1595 const Locale& loc) { |
| 1596 const UDate FAIL = (UDate) -1; |
| 1597 const UnicodeString FAIL_STR("parse failure"); |
| 1598 int32_t i = 0; |
| 1599 |
| 1600 UErrorCode ec = U_ZERO_ERROR; |
| 1601 SimpleDateFormat fmt("", loc, ec); |
| 1602 SimpleDateFormat ref(data[i++], loc, ec); |
| 1603 SimpleDateFormat gotfmt("G yyyy MM dd HH:mm:ss z", loc, ec); |
| 1604 if (U_FAILURE(ec)) { |
| 1605 dataerrln("FAIL: SimpleDateFormat constructor - %s", u_errorName(ec)); |
| 1606 return; |
| 1607 } |
| 1608 |
| 1609 const char* currentPat = NULL; |
| 1610 while (i<data_length) { |
| 1611 const char* pattern = data[i++]; |
| 1612 const char* input = data[i++]; |
| 1613 const char* expected = data[i++]; |
| 1614 |
| 1615 ec = U_ZERO_ERROR; |
| 1616 if (pattern != NULL) { |
| 1617 fmt.applyPattern(pattern); |
| 1618 currentPat = pattern; |
| 1619 } |
| 1620 UDate got = fmt.parse(input, ec); |
| 1621 UnicodeString gotstr(FAIL_STR); |
| 1622 if (U_FAILURE(ec)) { |
| 1623 got = FAIL; |
| 1624 } else { |
| 1625 gotstr.remove(); |
| 1626 gotfmt.format(got, gotstr); |
| 1627 } |
| 1628 |
| 1629 UErrorCode ec2 = U_ZERO_ERROR; |
| 1630 UDate exp = FAIL; |
| 1631 UnicodeString expstr(FAIL_STR); |
| 1632 if (expected != NULL) { |
| 1633 expstr = expected; |
| 1634 exp = ref.parse(expstr, ec2); |
| 1635 if (U_FAILURE(ec2)) { |
| 1636 // This only happens if expected is in wrong format -- |
| 1637 // should never happen once test is debugged. |
| 1638 errln("FAIL: Internal test error"); |
| 1639 return; |
| 1640 } |
| 1641 } |
| 1642 |
| 1643 if (got == exp) { |
| 1644 logln((UnicodeString)"Ok: " + input + " x " + |
| 1645 currentPat + " => " + gotstr); |
| 1646 } else { |
| 1647 errln((UnicodeString)"FAIL: " + input + " x " + |
| 1648 currentPat + " => " + gotstr + ", expected " + |
| 1649 expstr); |
| 1650 } |
| 1651 } |
| 1652 } |
| 1653 |
| 1654 /** |
| 1655 * Test formatting and parsing. Input is an array that starts |
| 1656 * with the following header: |
| 1657 * |
| 1658 * [0] = pattern string to parse [i+2] with |
| 1659 * |
| 1660 * followed by test cases, each of which is 3 array elements: |
| 1661 * |
| 1662 * [i] = pattern, or null to reuse prior pattern |
| 1663 * [i+1] = control string, either "fp", "pf", or "F". |
| 1664 * [i+2..] = data strings |
| 1665 * |
| 1666 * The number of data strings depends on the control string. |
| 1667 * Examples: |
| 1668 * 1. "y/M/d H:mm:ss.SS", "fp", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31.5
6", "2004 03 10 16:36:31.560", |
| 1669 * 'f': Format date [i+2] (as parsed using pattern [0]) and expect string [i+3]. |
| 1670 * 'p': Parse string [i+3] and expect date [i+4]. |
| 1671 * |
| 1672 * 2. "y/M/d H:mm:ss.SSS", "F", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31.5
67" |
| 1673 * 'F': Format date [i+2] and expect string [i+3], |
| 1674 * then parse string [i+3] and expect date [i+2]. |
| 1675 * |
| 1676 * 3. "y/M/d H:mm:ss.SSSS", "pf", "2004/3/10 16:36:31.5679", "2004 03 10 16:36:3
1.567", "2004/3/10 16:36:31.5670", |
| 1677 * 'p': Parse string [i+2] and expect date [i+3]. |
| 1678 * 'f': Format date [i+3] and expect string [i+4]. |
| 1679 */ |
| 1680 void DateFormatTest::expect(const char** data, int32_t data_length, |
| 1681 const Locale& loc) { |
| 1682 int32_t i = 0; |
| 1683 UErrorCode ec = U_ZERO_ERROR; |
| 1684 UnicodeString str, str2; |
| 1685 SimpleDateFormat fmt("", loc, ec); |
| 1686 SimpleDateFormat ref(data[i++], loc, ec); |
| 1687 SimpleDateFormat univ("EE G yyyy MM dd HH:mm:ss.SSS z", loc, ec); |
| 1688 if (U_FAILURE(ec)) { |
| 1689 dataerrln("Fail construct SimpleDateFormat: %s", u_errorName(ec)); |
| 1690 return; |
| 1691 } |
| 1692 |
| 1693 UnicodeString currentPat; |
| 1694 while (i<data_length) { |
| 1695 const char* pattern = data[i++]; |
| 1696 if (pattern != NULL) { |
| 1697 fmt.applyPattern(pattern); |
| 1698 currentPat = pattern; |
| 1699 } |
| 1700 |
| 1701 const char* control = data[i++]; |
| 1702 |
| 1703 if (uprv_strcmp(control, "fp") == 0) { |
| 1704 // 'f' |
| 1705 const char* datestr = data[i++]; |
| 1706 const char* string = data[i++]; |
| 1707 UDate date = ref.parse(ctou(datestr), ec); |
| 1708 if (!assertSuccess("parse", ec)) return; |
| 1709 assertEquals((UnicodeString)"\"" + currentPat + "\".format(" + dates
tr + ")", |
| 1710 ctou(string), |
| 1711 fmt.format(date, str.remove())); |
| 1712 // 'p' |
| 1713 datestr = data[i++]; |
| 1714 date = ref.parse(ctou(datestr), ec); |
| 1715 if (!assertSuccess("parse", ec)) return; |
| 1716 UDate parsedate = fmt.parse(ctou(string), ec); |
| 1717 if (assertSuccess((UnicodeString)"\"" + currentPat + "\".parse(" + s
tring + ")", ec)) { |
| 1718 assertEquals((UnicodeString)"\"" + currentPat + "\".parse(" + st
ring + ")", |
| 1719 univ.format(date, str.remove()), |
| 1720 univ.format(parsedate, str2.remove())); |
| 1721 } |
| 1722 } |
| 1723 |
| 1724 else if (uprv_strcmp(control, "pf") == 0) { |
| 1725 // 'p' |
| 1726 const char* string = data[i++]; |
| 1727 const char* datestr = data[i++]; |
| 1728 UDate date = ref.parse(ctou(datestr), ec); |
| 1729 if (!assertSuccess("parse", ec)) return; |
| 1730 UDate parsedate = fmt.parse(ctou(string), ec); |
| 1731 if (assertSuccess((UnicodeString)"\"" + currentPat + "\".parse(" + s
tring + ")", ec)) { |
| 1732 assertEquals((UnicodeString)"\"" + currentPat + "\".parse(" + st
ring + ")", |
| 1733 univ.format(date, str.remove()), |
| 1734 univ.format(parsedate, str2.remove())); |
| 1735 } |
| 1736 // 'f' |
| 1737 string = data[i++]; |
| 1738 assertEquals((UnicodeString)"\"" + currentPat + "\".format(" + dates
tr + ")", |
| 1739 ctou(string), |
| 1740 fmt.format(date, str.remove())); |
| 1741 } |
| 1742 |
| 1743 else if (uprv_strcmp(control, "F") == 0) { |
| 1744 const char* datestr = data[i++]; |
| 1745 const char* string = data[i++]; |
| 1746 UDate date = ref.parse(ctou(datestr), ec); |
| 1747 if (!assertSuccess("parse", ec)) return; |
| 1748 assertEquals((UnicodeString)"\"" + currentPat + "\".format(" + dates
tr + ")", |
| 1749 ctou(string), |
| 1750 fmt.format(date, str.remove())); |
| 1751 |
| 1752 UDate parsedate = fmt.parse(string, ec); |
| 1753 if (assertSuccess((UnicodeString)"\"" + currentPat + "\".parse(" + s
tring + ")", ec)) { |
| 1754 assertEquals((UnicodeString)"\"" + currentPat + "\".parse(" + st
ring + ")", |
| 1755 univ.format(date, str.remove()), |
| 1756 univ.format(parsedate, str2.remove())); |
| 1757 } |
| 1758 } |
| 1759 |
| 1760 else { |
| 1761 errln((UnicodeString)"FAIL: Invalid control string " + control); |
| 1762 return; |
| 1763 } |
| 1764 } |
| 1765 } |
| 1766 |
| 1767 /** |
| 1768 * Test formatting. Input is an array that starts |
| 1769 * with the following header: |
| 1770 * |
| 1771 * [0] = pattern string to parse [i+2] with |
| 1772 * |
| 1773 * followed by test cases, each of which is 3 array elements: |
| 1774 * |
| 1775 * [i] = pattern, or null to reuse prior pattern |
| 1776 * [i+1] = data string a |
| 1777 * [i+2] = data string b |
| 1778 * |
| 1779 * Examples: |
| 1780 * Format date [i+1] and expect string [i+2]. |
| 1781 * |
| 1782 * "y/M/d H:mm:ss.SSSS", "2004/3/10 16:36:31.5679", "2004 03 10 16:36:31.567" |
| 1783 */ |
| 1784 void DateFormatTest::expectFormat(const char** data, int32_t data_length, |
| 1785 const Locale& loc) { |
| 1786 int32_t i = 0; |
| 1787 UErrorCode ec = U_ZERO_ERROR; |
| 1788 UnicodeString str, str2; |
| 1789 SimpleDateFormat fmt("", loc, ec); |
| 1790 SimpleDateFormat ref(data[i++], loc, ec); |
| 1791 SimpleDateFormat univ("EE G yyyy MM dd HH:mm:ss.SSS z", loc, ec); |
| 1792 if (U_FAILURE(ec)) { |
| 1793 dataerrln("Fail construct SimpleDateFormat: %s", u_errorName(ec)); |
| 1794 return; |
| 1795 } |
| 1796 |
| 1797 UnicodeString currentPat; |
| 1798 |
| 1799 while (i<data_length) { |
| 1800 const char* pattern = data[i++]; |
| 1801 if (pattern != NULL) { |
| 1802 fmt.applyPattern(pattern); |
| 1803 currentPat = pattern; |
| 1804 } |
| 1805 |
| 1806 const char* datestr = data[i++]; |
| 1807 const char* string = data[i++]; |
| 1808 UDate date = ref.parse(ctou(datestr), ec); |
| 1809 if (!assertSuccess("parse", ec)) return; |
| 1810 assertEquals((UnicodeString)"\"" + currentPat + "\".format(" + datestr +
")", |
| 1811 ctou(string), |
| 1812 fmt.format(date, str.remove())); |
| 1813 } |
| 1814 } |
| 1815 |
| 1816 void DateFormatTest::TestGenericTime() { |
| 1817 // any zone pattern should parse any zone |
| 1818 const Locale en("en"); |
| 1819 const char* ZDATA[] = { |
| 1820 "yyyy MM dd HH:mm zzz", |
| 1821 // round trip |
| 1822 "y/M/d H:mm zzzz", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 Pacific S
tandard Time", |
| 1823 "y/M/d H:mm zzz", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 PST", |
| 1824 "y/M/d H:mm vvvv", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 Pacific T
ime", |
| 1825 "y/M/d H:mm v", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 PT", |
| 1826 // non-generic timezone string influences dst offset even if wrong for d
ate/time |
| 1827 "y/M/d H:mm zzz", "pf", "2004/1/1 1:00 PDT", "2004 01 01 01:00 PDT", "20
04/1/1 0:00 PST", |
| 1828 "y/M/d H:mm vvvv", "pf", "2004/1/1 1:00 PDT", "2004 01 01 01:00 PDT", "2
004/1/1 0:00 Pacific Time", |
| 1829 "y/M/d H:mm zzz", "pf", "2004/7/1 1:00 PST", "2004 07 01 02:00 PDT", "20
04/7/1 2:00 PDT", |
| 1830 "y/M/d H:mm vvvv", "pf", "2004/7/1 1:00 PST", "2004 07 01 02:00 PDT", "2
004/7/1 2:00 Pacific Time", |
| 1831 // generic timezone generates dst offset appropriate for local time |
| 1832 "y/M/d H:mm zzz", "pf", "2004/1/1 1:00 PT", "2004 01 01 01:00 PST", "200
4/1/1 1:00 PST", |
| 1833 "y/M/d H:mm vvvv", "pf", "2004/1/1 1:00 PT", "2004 01 01 01:00 PST", "20
04/1/1 1:00 Pacific Time", |
| 1834 "y/M/d H:mm zzz", "pf", "2004/7/1 1:00 PT", "2004 07 01 01:00 PDT", "200
4/7/1 1:00 PDT", |
| 1835 "y/M/d H:mm vvvv", "pf", "2004/7/1 1:00 PT", "2004 07 01 01:00 PDT", "20
04/7/1 1:00 Pacific Time", |
| 1836 // daylight savings time transition edge cases. |
| 1837 // time to parse does not really exist, PT interpreted as earlier time |
| 1838 "y/M/d H:mm zzz", "pf", "2005/4/3 2:30 PT", "2005 04 03 03:30 PDT", "200
5/4/3 3:30 PDT", |
| 1839 "y/M/d H:mm zzz", "pf", "2005/4/3 2:30 PST", "2005 04 03 03:30 PDT", "20
05/4/3 3:30 PDT", |
| 1840 "y/M/d H:mm zzz", "pf", "2005/4/3 2:30 PDT", "2005 04 03 01:30 PST", "20
05/4/3 1:30 PST", |
| 1841 "y/M/d H:mm v", "pf", "2005/4/3 2:30 PT", "2005 04 03 03:30 PDT", "2005/
4/3 3:30 PT", |
| 1842 "y/M/d H:mm v", "pf", "2005/4/3 2:30 PST", "2005 04 03 03:30 PDT", "2005
/4/3 3:30 PT", |
| 1843 "y/M/d H:mm v", "pf", "2005/4/3 2:30 PDT", "2005 04 03 01:30 PST", "2005
/4/3 1:30 PT", |
| 1844 "y/M/d H:mm", "pf", "2005/4/3 2:30", "2005 04 03 03:30 PDT", "2005/4/3 3
:30", |
| 1845 // time to parse is ambiguous, PT interpreted as later time |
| 1846 "y/M/d H:mm zzz", "pf", "2005/10/30 1:30 PT", "2005 10 30 01:30 PST", "2
005/10/30 1:30 PST", |
| 1847 "y/M/d H:mm v", "pf", "2005/10/30 1:30 PT", "2005 10 30 01:30 PST", "20
05/10/30 1:30 PT", |
| 1848 "y/M/d H:mm", "pf", "2005/10/30 1:30 PT", "2005 10 30 01:30 PST", "2005/
10/30 1:30", |
| 1849 |
| 1850 "y/M/d H:mm zzz", "pf", "2004/10/31 1:30 PT", "2004 10 31 01:30 PST", "2
004/10/31 1:30 PST", |
| 1851 "y/M/d H:mm zzz", "pf", "2004/10/31 1:30 PST", "2004 10 31 01:30 PST", "
2004/10/31 1:30 PST", |
| 1852 "y/M/d H:mm zzz", "pf", "2004/10/31 1:30 PDT", "2004 10 31 01:30 PDT", "
2004/10/31 1:30 PDT", |
| 1853 "y/M/d H:mm v", "pf", "2004/10/31 1:30 PT", "2004 10 31 01:30 PST", "200
4/10/31 1:30 PT", |
| 1854 "y/M/d H:mm v", "pf", "2004/10/31 1:30 PST", "2004 10 31 01:30 PST", "20
04/10/31 1:30 PT", |
| 1855 "y/M/d H:mm v", "pf", "2004/10/31 1:30 PDT", "2004 10 31 01:30 PDT", "20
04/10/31 1:30 PT", |
| 1856 "y/M/d H:mm", "pf", "2004/10/31 1:30", "2004 10 31 01:30 PST", "2004/10/
31 1:30", |
| 1857 }; |
| 1858 const int32_t ZDATA_length = sizeof(ZDATA)/ sizeof(ZDATA[0]); |
| 1859 expect(ZDATA, ZDATA_length, en); |
| 1860 |
| 1861 UErrorCode status = U_ZERO_ERROR; |
| 1862 |
| 1863 logln("cross format/parse tests"); |
| 1864 UnicodeString basepat("yy/MM/dd H:mm "); |
| 1865 SimpleDateFormat formats[] = { |
| 1866 SimpleDateFormat(basepat + "vvv", en, status), |
| 1867 SimpleDateFormat(basepat + "vvvv", en, status), |
| 1868 SimpleDateFormat(basepat + "zzz", en, status), |
| 1869 SimpleDateFormat(basepat + "zzzz", en, status) |
| 1870 }; |
| 1871 if (U_FAILURE(status)) { |
| 1872 dataerrln("Fail construct SimpleDateFormat: %s", u_errorName(status)); |
| 1873 return; |
| 1874 } |
| 1875 const int32_t formats_length = sizeof(formats)/sizeof(formats[0]); |
| 1876 |
| 1877 UnicodeString test; |
| 1878 SimpleDateFormat univ("yyyy MM dd HH:mm zzz", en, status); |
| 1879 ASSERT_OK(status); |
| 1880 const UnicodeString times[] = { |
| 1881 "2004 01 02 03:04 PST", |
| 1882 "2004 07 08 09:10 PDT" |
| 1883 }; |
| 1884 int32_t times_length = sizeof(times)/sizeof(times[0]); |
| 1885 for (int i = 0; i < times_length; ++i) { |
| 1886 UDate d = univ.parse(times[i], status); |
| 1887 logln(UnicodeString("\ntime: ") + d); |
| 1888 for (int j = 0; j < formats_length; ++j) { |
| 1889 test.remove(); |
| 1890 formats[j].format(d, test); |
| 1891 logln("\ntest: '" + test + "'"); |
| 1892 for (int k = 0; k < formats_length; ++k) { |
| 1893 UDate t = formats[k].parse(test, status); |
| 1894 if (U_SUCCESS(status)) { |
| 1895 if (d != t) { |
| 1896 errln((UnicodeString)"FAIL: format " + k + |
| 1897 " incorrectly parsed output of format " + j + |
| 1898 " (" + test + "), returned " + |
| 1899 dateToString(t) + " instead of " + dateToString(d)); |
| 1900 } else { |
| 1901 logln((UnicodeString)"OK: format " + k + " parsed ok"); |
| 1902 } |
| 1903 } else if (status == U_PARSE_ERROR) { |
| 1904 errln((UnicodeString)"FAIL: format " + k + |
| 1905 " could not parse output of format " + j + |
| 1906 " (" + test + ")"); |
| 1907 } |
| 1908 } |
| 1909 } |
| 1910 } |
| 1911 } |
| 1912 |
| 1913 void DateFormatTest::TestGenericTimeZoneOrder() { |
| 1914 // generic times should parse the same no matter what the placement of the tim
e zone string |
| 1915 // should work for standard and daylight times |
| 1916 |
| 1917 const char* XDATA[] = { |
| 1918 "yyyy MM dd HH:mm zzz", |
| 1919 // standard time, explicit daylight/standard |
| 1920 "y/M/d H:mm zzz", "pf", "2004/1/1 1:00 PT", "2004 01 01 01:00 PST", "2004/1/
1 1:00 PST", |
| 1921 "y/M/d zzz H:mm", "pf", "2004/1/1 PT 1:00", "2004 01 01 01:00 PST", "2004/1/
1 PST 1:00", |
| 1922 "zzz y/M/d H:mm", "pf", "PT 2004/1/1 1:00", "2004 01 01 01:00 PST", "PST 200
4/1/1 1:00", |
| 1923 |
| 1924 // standard time, generic |
| 1925 "y/M/d H:mm vvvv", "pf", "2004/1/1 1:00 PT", "2004 01 01 01:00 PST", "2004/1
/1 1:00 Pacific Time", |
| 1926 "y/M/d vvvv H:mm", "pf", "2004/1/1 PT 1:00", "2004 01 01 01:00 PST", "2004/1
/1 Pacific Time 1:00", |
| 1927 "vvvv y/M/d H:mm", "pf", "PT 2004/1/1 1:00", "2004 01 01 01:00 PST", "Pacifi
c Time 2004/1/1 1:00", |
| 1928 |
| 1929 // dahylight time, explicit daylight/standard |
| 1930 "y/M/d H:mm zzz", "pf", "2004/7/1 1:00 PT", "2004 07 01 01:00 PDT", "2004/7/
1 1:00 PDT", |
| 1931 "y/M/d zzz H:mm", "pf", "2004/7/1 PT 1:00", "2004 07 01 01:00 PDT", "2004/7/
1 PDT 1:00", |
| 1932 "zzz y/M/d H:mm", "pf", "PT 2004/7/1 1:00", "2004 07 01 01:00 PDT", "PDT 200
4/7/1 1:00", |
| 1933 |
| 1934 // daylight time, generic |
| 1935 "y/M/d H:mm vvvv", "pf", "2004/7/1 1:00 PT", "2004 07 01 01:00 PDT", "2004/7
/1 1:00 Pacific Time", |
| 1936 "y/M/d vvvv H:mm", "pf", "2004/7/1 PT 1:00", "2004 07 01 01:00 PDT", "2004/7
/1 Pacific Time 1:00", |
| 1937 "vvvv y/M/d H:mm", "pf", "PT 2004/7/1 1:00", "2004 07 01 01:00 PDT", "Pacifi
c Time 2004/7/1 1:00", |
| 1938 }; |
| 1939 const int32_t XDATA_length = sizeof(XDATA)/sizeof(XDATA[0]); |
| 1940 Locale en("en"); |
| 1941 expect(XDATA, XDATA_length, en); |
| 1942 } |
| 1943 |
| 1944 void DateFormatTest::TestZTimeZoneParsing(void) { |
| 1945 UErrorCode status = U_ZERO_ERROR; |
| 1946 const Locale en("en"); |
| 1947 UnicodeString test; |
| 1948 //SimpleDateFormat univ("yyyy-MM-dd'T'HH:mm Z", en, status); |
| 1949 SimpleDateFormat univ("HH:mm Z", en, status); |
| 1950 if (failure(status, "construct SimpleDateFormat", TRUE)) return; |
| 1951 const TimeZone *t = TimeZone::getGMT(); |
| 1952 univ.setTimeZone(*t); |
| 1953 |
| 1954 univ.setLenient(false); |
| 1955 ParsePosition pp(0); |
| 1956 struct { |
| 1957 UnicodeString input; |
| 1958 UnicodeString expected_result; |
| 1959 } tests[] = { |
| 1960 { "11:00 -0200", "13:00 +0000" }, |
| 1961 { "11:00 +0200", "09:00 +0000" }, |
| 1962 { "11:00 +0400", "07:00 +0000" }, |
| 1963 { "11:00 +0530", "05:30 +0000" } |
| 1964 }; |
| 1965 |
| 1966 UnicodeString result; |
| 1967 int32_t tests_length = sizeof(tests)/sizeof(tests[0]); |
| 1968 for (int i = 0; i < tests_length; ++i) { |
| 1969 pp.setIndex(0); |
| 1970 UDate d = univ.parse(tests[i].input, pp); |
| 1971 if(pp.getIndex() != tests[i].input.length()){ |
| 1972 errln("setZoneString() did not succeed. Consumed: %i instead of %i", |
| 1973 pp.getIndex(), tests[i].input.length()); |
| 1974 return; |
| 1975 } |
| 1976 result.remove(); |
| 1977 univ.format(d, result); |
| 1978 if(result != tests[i].expected_result) { |
| 1979 errln("Expected " + tests[i].expected_result |
| 1980 + " got " + result); |
| 1981 return; |
| 1982 } |
| 1983 logln("SUCCESS: Parsed " + tests[i].input |
| 1984 + " got " + result |
| 1985 + " expected " + tests[i].expected_result); |
| 1986 } |
| 1987 } |
| 1988 |
| 1989 void DateFormatTest::TestHost(void) |
| 1990 { |
| 1991 #ifdef U_WINDOWS |
| 1992 Win32DateTimeTest::testLocales(this); |
| 1993 #endif |
| 1994 } |
| 1995 |
| 1996 // Relative Date Tests |
| 1997 |
| 1998 void DateFormatTest::TestRelative(int daysdelta, |
| 1999 const Locale& loc, |
| 2000 const char *expectChars) { |
| 2001 char banner[25]; |
| 2002 sprintf(banner, "%d", daysdelta); |
| 2003 UnicodeString bannerStr(banner, ""); |
| 2004 |
| 2005 UErrorCode status = U_ZERO_ERROR; |
| 2006 |
| 2007 FieldPosition pos(0); |
| 2008 UnicodeString test; |
| 2009 Locale en("en"); |
| 2010 DateFormat *fullrelative = DateFormat::createDateInstance(DateFormat::kFullR
elative, loc); |
| 2011 |
| 2012 if (fullrelative == NULL) { |
| 2013 dataerrln("DateFormat::createDateInstance(DateFormat::kFullRelative, %s)
returned NULL", loc.getName()); |
| 2014 return; |
| 2015 } |
| 2016 |
| 2017 DateFormat *full = DateFormat::createDateInstance(DateFormat::kFull
, loc); |
| 2018 |
| 2019 if (full == NULL) { |
| 2020 errln("DateFormat::createDateInstance(DateFormat::kFull, %s) returned NU
LL", loc.getName()); |
| 2021 return; |
| 2022 } |
| 2023 |
| 2024 DateFormat *en_full = DateFormat::createDateInstance(DateFormat::kFu
ll, en); |
| 2025 |
| 2026 if (en_full == NULL) { |
| 2027 errln("DateFormat::createDateInstance(DateFormat::kFull, en) returned NU
LL"); |
| 2028 return; |
| 2029 } |
| 2030 |
| 2031 DateFormat *en_fulltime = DateFormat::createDateTimeInstance(DateFor
mat::kFull,DateFormat::kFull,en); |
| 2032 |
| 2033 if (en_fulltime == NULL) { |
| 2034 errln("DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat:
:kFull, en) returned NULL"); |
| 2035 return; |
| 2036 } |
| 2037 |
| 2038 UnicodeString result; |
| 2039 UnicodeString normalResult; |
| 2040 UnicodeString expect; |
| 2041 UnicodeString parseResult; |
| 2042 |
| 2043 Calendar *c = Calendar::createInstance(status); |
| 2044 |
| 2045 // Today = Today |
| 2046 c->setTime(Calendar::getNow(), status); |
| 2047 if(daysdelta != 0) { |
| 2048 c->add(Calendar::DATE,daysdelta,status); |
| 2049 } |
| 2050 ASSERT_OK(status); |
| 2051 |
| 2052 // calculate the expected string |
| 2053 if(expectChars != NULL) { |
| 2054 expect = expectChars; |
| 2055 } else { |
| 2056 full->format(*c, expect, pos); // expected = normal full |
| 2057 } |
| 2058 |
| 2059 fullrelative ->format(*c, result, pos); |
| 2060 en_full ->format(*c, normalResult, pos); |
| 2061 |
| 2062 if(result != expect) { |
| 2063 errln("FAIL: Relative Format ["+bannerStr+"] of "+normalResult+" failed,
expected "+expect+" but got " + result); |
| 2064 } else { |
| 2065 logln("PASS: Relative Format ["+bannerStr+"] of "+normalResult+" got " +
result); |
| 2066 } |
| 2067 |
| 2068 |
| 2069 //verify |
| 2070 UDate d = fullrelative->parse(result, status); |
| 2071 ASSERT_OK(status); |
| 2072 |
| 2073 UnicodeString parseFormat; // parse rel->format full |
| 2074 en_full->format(d, parseFormat, status); |
| 2075 |
| 2076 UnicodeString origFormat; |
| 2077 en_full->format(*c, origFormat, pos); |
| 2078 |
| 2079 if(parseFormat!=origFormat) { |
| 2080 errln("FAIL: Relative Parse ["+bannerStr+"] of "+result+" failed, expect
ed "+parseFormat+" but got "+origFormat); |
| 2081 } else { |
| 2082 logln("PASS: Relative Parse ["+bannerStr+"] of "+result+" passed, got "+
parseFormat); |
| 2083 } |
| 2084 |
| 2085 delete full; |
| 2086 delete fullrelative; |
| 2087 delete en_fulltime; |
| 2088 delete en_full; |
| 2089 delete c; |
| 2090 } |
| 2091 |
| 2092 |
| 2093 void DateFormatTest::TestRelative(void) |
| 2094 { |
| 2095 Locale en("en"); |
| 2096 TestRelative( 0, en, "Today"); |
| 2097 TestRelative(-1, en, "Yesterday"); |
| 2098 TestRelative( 1, en, "Tomorrow"); |
| 2099 TestRelative( 2, en, NULL); |
| 2100 TestRelative( -2, en, NULL); |
| 2101 TestRelative( 3, en, NULL); |
| 2102 TestRelative( -3, en, NULL); |
| 2103 TestRelative( 300, en, NULL); |
| 2104 TestRelative( -300, en, NULL); |
| 2105 } |
| 2106 |
| 2107 void DateFormatTest::TestRelativeClone(void) |
| 2108 { |
| 2109 /* |
| 2110 Verify that a cloned formatter gives the same results |
| 2111 and is useable after the original has been deleted. |
| 2112 */ |
| 2113 UErrorCode status = U_ZERO_ERROR; |
| 2114 Locale loc("en"); |
| 2115 UDate now = Calendar::getNow(); |
| 2116 DateFormat *full = DateFormat::createDateInstance(DateFormat::kFullRelative,
loc); |
| 2117 if (full == NULL) { |
| 2118 dataerrln("FAIL: Can't create Relative date instance"); |
| 2119 return; |
| 2120 } |
| 2121 UnicodeString result1; |
| 2122 full->format(now, result1, status); |
| 2123 Format *fullClone = full->clone(); |
| 2124 delete full; |
| 2125 full = NULL; |
| 2126 |
| 2127 UnicodeString result2; |
| 2128 fullClone->format(now, result2, status); |
| 2129 ASSERT_OK(status); |
| 2130 if (result1 != result2) { |
| 2131 errln("FAIL: Clone returned different result from non-clone."); |
| 2132 } |
| 2133 delete fullClone; |
| 2134 } |
| 2135 |
| 2136 void DateFormatTest::TestHostClone(void) |
| 2137 { |
| 2138 /* |
| 2139 Verify that a cloned formatter gives the same results |
| 2140 and is useable after the original has been deleted. |
| 2141 */ |
| 2142 // This is mainly important on Windows. |
| 2143 UErrorCode status = U_ZERO_ERROR; |
| 2144 Locale loc("en_US@compat=host"); |
| 2145 UDate now = Calendar::getNow(); |
| 2146 DateFormat *full = DateFormat::createDateInstance(DateFormat::kFull, loc); |
| 2147 if (full == NULL) { |
| 2148 dataerrln("FAIL: Can't create Relative date instance"); |
| 2149 return; |
| 2150 } |
| 2151 UnicodeString result1; |
| 2152 full->format(now, result1, status); |
| 2153 Format *fullClone = full->clone(); |
| 2154 delete full; |
| 2155 full = NULL; |
| 2156 |
| 2157 UnicodeString result2; |
| 2158 fullClone->format(now, result2, status); |
| 2159 ASSERT_OK(status); |
| 2160 if (result1 != result2) { |
| 2161 errln("FAIL: Clone returned different result from non-clone."); |
| 2162 } |
| 2163 delete fullClone; |
| 2164 } |
| 2165 |
| 2166 void DateFormatTest::TestTimeZoneDisplayName() |
| 2167 { |
| 2168 // This test data was ported from ICU4J. Don't know why the 6th column in t
here because it's not being |
| 2169 // used currently. |
| 2170 const char *fallbackTests[][6] = { |
| 2171 { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8
:00" }, |
| 2172 { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:0
0", "-8:00" }, |
| 2173 { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "PST", "Amer
ica/Los_Angeles" }, |
| 2174 { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "V", "PST", "Amer
ica/Los_Angeles" }, |
| 2175 { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "Pacific
Standard Time", "America/Los_Angeles" }, |
| 2176 { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7
:00" }, |
| 2177 { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:0
0", "-7:00" }, |
| 2178 { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "PDT", "Amer
ica/Los_Angeles" }, |
| 2179 { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "V", "PDT", "Amer
ica/Los_Angeles" }, |
| 2180 { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "Pacific
Daylight Time", "America/Los_Angeles" }, |
| 2181 { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "PT", "Ameri
ca/Los_Angeles" }, |
| 2182 { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "Pacific
Time", "America/Los_Angeles" }, |
| 2183 { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "VVVV", "United S
tates (Los Angeles)", "America/Los_Angeles" }, |
| 2184 { "en_GB", "America/Los_Angeles", "2004-01-15T12:00:00Z", "z", "PST", "A
merica/Los_Angeles" }, |
| 2185 { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "Z", "-0700", "-7:00"
}, |
| 2186 { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-07:00",
"-7:00" }, |
| 2187 { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "z", "MST", "America/
Phoenix" }, |
| 2188 { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "V", "MST", "America/
Phoenix" }, |
| 2189 { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "zzzz", "Mountain Sta
ndard Time", "America/Phoenix" }, |
| 2190 { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00"
}, |
| 2191 { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00",
"-7:00" }, |
| 2192 { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "z", "MST", "America/
Phoenix" }, |
| 2193 { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "V", "MST", "America/
Phoenix" }, |
| 2194 { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "zzzz", "Mountain Sta
ndard Time", "America/Phoenix" }, |
| 2195 { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "v", "MST", "America/
Phoenix" }, |
| 2196 { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "vvvv", "Mountain Sta
ndard Time", "America/Phoenix" }, |
| 2197 { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "VVVV", "United State
s (Phoenix)", "America/Phoenix" }, |
| 2198 |
| 2199 { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "
-0300", "-3:00" }, |
| 2200 { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ"
, "GMT-03:00", "-3:00" }, |
| 2201 { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "
GMT-03:00", "-3:00" }, |
| 2202 { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "V", "
ART", "-3:00" }, |
| 2203 { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz"
, "Argentina Time", "-3:00" }, |
| 2204 { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "
-0300", "-3:00" }, |
| 2205 { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ"
, "GMT-03:00", "-3:00" }, |
| 2206 { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "
GMT-03:00", "-3:00" }, |
| 2207 { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "V", "
ART", "-3:00" }, |
| 2208 { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz"
, "Argentina Time", "-3:00" }, |
| 2209 { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "
Argentina (Buenos Aires)", "America/Buenos_Aires" }, |
| 2210 { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv"
, "Argentina Time", "America/Buenos_Aires" }, |
| 2211 { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "VVVV"
, "Argentina (Buenos Aires)", "America/Buenos_Aires" }, |
| 2212 |
| 2213 { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-
3:00" }, |
| 2214 { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:
00", "-3:00" }, |
| 2215 { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00"
, "-3:00" }, |
| 2216 { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "V", "ART", "-3:
00" }, |
| 2217 { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "Argenti
na Time", "-3:00" }, |
| 2218 { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-
3:00" }, |
| 2219 { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:
00", "-3:00" }, |
| 2220 { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00"
, "-3:00" }, |
| 2221 { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "V", "ART", "-3:
00" }, |
| 2222 { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "Argenti
na Time", "-3:00" }, |
| 2223 { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Argentina
(Buenos Aires)", "America/Buenos_Aires" }, |
| 2224 { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Argenti
na Time", "America/Buenos_Aires" }, |
| 2225 { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "VVVV", "Argenti
na (Buenos Aires)", "America/Buenos_Aires" }, |
| 2226 |
| 2227 { "en", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00"
}, |
| 2228 { "en", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "
-5:00" }, |
| 2229 { "en", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-05:00", "-5:
00" }, |
| 2230 { "en", "America/Havana", "2004-01-15T00:00:00Z", "V", "CST (Cuba)", "-5
:00" }, |
| 2231 { "en", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "Cuba Standard
Time", "-5:00" }, |
| 2232 { "en", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00"
}, |
| 2233 { "en", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "
-4:00" }, |
| 2234 { "en", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-04:00", "-4:
00" }, |
| 2235 { "en", "America/Havana", "2004-07-15T00:00:00Z", "V", "CDT (Cuba)", "-4
:00" }, |
| 2236 { "en", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "Cuba Daylight
Time", "-4:00" }, |
| 2237 { "en", "America/Havana", "2004-07-15T00:00:00Z", "v", "Cuba Time", "Ame
rica/Havana" }, |
| 2238 { "en", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "Cuba Time", "
America/Havana" }, |
| 2239 { "en", "America/Havana", "2004-07-15T00:00:00Z", "VVVV", "Cuba Time", "
America/Havana" }, |
| 2240 |
| 2241 { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00"
}, |
| 2242 { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+
11:00" }, |
| 2243 { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:
00" }, |
| 2244 { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "V", "AEDT", "+11:00" }
, |
| 2245 { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "Australian Eas
tern Daylight Time", "+11:00" }, |
| 2246 { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00"
}, |
| 2247 { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+
10:00" }, |
| 2248 { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:
00" }, |
| 2249 { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "V", "AEST", "+10:00" }
, |
| 2250 { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "Australian Eas
tern Standard Time", "+10:00" }, |
| 2251 { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "Australia (Sydney
)", "Australia/Sydney" }, |
| 2252 { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "Eastern Austra
lia Time", "Australia/Sydney" }, |
| 2253 { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "VVVV", "Australia (Syd
ney)", "Australia/Sydney" }, |
| 2254 |
| 2255 { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:0
0" }, |
| 2256 { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00",
"+11:00" }, |
| 2257 { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+
11:00" }, |
| 2258 { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "V", "AEDT", "+11:00
" }, |
| 2259 { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "Australian
Eastern Daylight Time", "+11:00" }, |
| 2260 { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:0
0" }, |
| 2261 { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00",
"+10:00" }, |
| 2262 { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+
10:00" }, |
| 2263 { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "V", "AEST", "+10:00
" }, |
| 2264 { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "Australian
Eastern Standard Time", "+10:00" }, |
| 2265 { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "Australia (Syd
ney)", "Australia/Sydney" }, |
| 2266 { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "Eastern Aus
tralia Time", "Australia/Sydney" }, |
| 2267 { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "VVVV", "Australia (
Sydney)", "Australia/Sydney" }, |
| 2268 |
| 2269 { "en", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }
, |
| 2270 { "en", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+00:00", "+
0:00" }, |
| 2271 { "en", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT", "+0:00" }, |
| 2272 { "en", "Europe/London", "2004-01-15T00:00:00Z", "V", "GMT", "+0:00" }, |
| 2273 { "en", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "Greenwich Mean
Time", "+0:00" }, |
| 2274 { "en", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }
, |
| 2275 { "en", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+
1:00" }, |
| 2276 { "en", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+01:00", "Euro
pe/London" }, |
| 2277 { "en", "Europe/London", "2004-07-15T00:00:00Z", "V", "BST", "Europe/Lon
don" }, |
| 2278 { "en", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "British Summer
Time", "Europe/London" }, |
| 2279 // icu en.txt has exemplar city for this time zone |
| 2280 { "en", "Europe/London", "2004-07-15T00:00:00Z", "v", "United Kingdom Ti
me", "Europe/London" }, |
| 2281 { "en", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "United Kingdom
Time", "Europe/London" }, |
| 2282 { "en", "Europe/London", "2004-07-15T00:00:00Z", "VVVV", "United Kingdom
Time", "Europe/London" }, |
| 2283 |
| 2284 { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, |
| 2285 { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00
" }, |
| 2286 { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }
, |
| 2287 { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00
" }, |
| 2288 { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, |
| 2289 { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00
" }, |
| 2290 { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }
, |
| 2291 { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00
" }, |
| 2292 { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-03:00", "-3:00" }
, |
| 2293 { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00
" }, |
| 2294 |
| 2295 // JB#5150 |
| 2296 { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }
, |
| 2297 { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+
5:30" }, |
| 2298 { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+05:30", "+5:3
0" }, |
| 2299 { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "V", "IST", "+5:30" }, |
| 2300 { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "India Standard
Time", "+5:30" }, |
| 2301 { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }
, |
| 2302 { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+
5:30" }, |
| 2303 { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+05:30", "+05:
30" }, |
| 2304 { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "V", "IST", "+05:30" }, |
| 2305 { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "India Standard
Time", "+5:30" }, |
| 2306 { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "India Time", "Asi
a/Calcutta" }, |
| 2307 { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "India Standard
Time", "Asia/Calcutta" }, |
| 2308 |
| 2309 // ========== |
| 2310 |
| 2311 { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8
:00" }, |
| 2312 { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:0
0", "-8:00" }, |
| 2313 { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-08:00",
"-8:00" }, |
| 2314 { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "GMT-08:0
0", "-8:00" }, |
| 2315 { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7
:00" }, |
| 2316 { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:0
0", "-7:00" }, |
| 2317 { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-07:00",
"-7:00" }, |
| 2318 { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "GMT-07:0
0", "-7:00" }, |
| 2319 { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "Vereinigte
Staaten (Los Angeles)", "America/Los_Angeles" }, |
| 2320 { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "Vereinig
te Staaten (Los Angeles)", "America/Los_Angeles" }, |
| 2321 |
| 2322 { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "
-0300", "-3:00" }, |
| 2323 { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ"
, "GMT-03:00", "-3:00" }, |
| 2324 { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "
GMT-03:00", "-3:00" }, |
| 2325 { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz"
, "GMT-03:00", "-3:00" }, |
| 2326 { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "
-0300", "-3:00" }, |
| 2327 { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ"
, "GMT-03:00", "-3:00" }, |
| 2328 { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "
GMT-03:00", "-3:00" }, |
| 2329 { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz"
, "GMT-03:00", "-3:00" }, |
| 2330 { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "
Argentinien (Buenos Aires)", "America/Buenos_Aires" }, |
| 2331 { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv"
, "Argentinien (Buenos Aires)", "America/Buenos_Aires" }, |
| 2332 |
| 2333 { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-
3:00" }, |
| 2334 { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:
00", "-3:00" }, |
| 2335 { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00"
, "-3:00" }, |
| 2336 { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:
00", "-3:00" }, |
| 2337 { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-
3:00" }, |
| 2338 { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:
00", "-3:00" }, |
| 2339 { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00"
, "-3:00" }, |
| 2340 { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:
00", "-3:00" }, |
| 2341 { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Argentinie
n (Buenos Aires)", "America/Buenos_Aires" }, |
| 2342 { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Argenti
nien (Buenos Aires)", "America/Buenos_Aires" }, |
| 2343 |
| 2344 { "de", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00"
}, |
| 2345 { "de", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "
-5:00" }, |
| 2346 { "de", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-05:00", "-5:
00" }, |
| 2347 { "de", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-05:00", "
-5:00" }, |
| 2348 { "de", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00"
}, |
| 2349 { "de", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "
-4:00" }, |
| 2350 { "de", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-04:00", "-4:
00" }, |
| 2351 { "de", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-04:00", "
-4:00" }, |
| 2352 { "de", "America/Havana", "2004-07-15T00:00:00Z", "v", "(Kuba)", "Americ
a/Havana" }, |
| 2353 { "de", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "(Kuba)", "Ame
rica/Havana" }, |
| 2354 // added to test proper fallback of country name |
| 2355 { "de_CH", "America/Havana", "2004-07-15T00:00:00Z", "v", "(Kuba)", "Ame
rica/Havana" }, |
| 2356 { "de_CH", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "(Kuba)", "
America/Havana" }, |
| 2357 |
| 2358 { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00"
}, |
| 2359 { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+
11:00" }, |
| 2360 { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:
00" }, |
| 2361 { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+
11:00" }, |
| 2362 { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00"
}, |
| 2363 { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+
10:00" }, |
| 2364 { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:
00" }, |
| 2365 { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+
10:00" }, |
| 2366 { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "Australien (Sydne
y)", "Australia/Sydney" }, |
| 2367 { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "Australien (Sy
dney)", "Australia/Sydney" }, |
| 2368 |
| 2369 { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:0
0" }, |
| 2370 { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00",
"+11:00" }, |
| 2371 { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+
11:00" }, |
| 2372 { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00",
"+11:00" }, |
| 2373 { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:0
0" }, |
| 2374 { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00",
"+10:00" }, |
| 2375 { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+
10:00" }, |
| 2376 { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00",
"+10:00" }, |
| 2377 { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "Australien (Sy
dney)", "Australia/Sydney" }, |
| 2378 { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "Australien
(Sydney)", "Australia/Sydney" }, |
| 2379 |
| 2380 { "de", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }
, |
| 2381 { "de", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+00:00", "+
0:00" }, |
| 2382 { "de", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT+00:00", "+0:0
0" }, |
| 2383 { "de", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "GMT+00:00", "+
0:00" }, |
| 2384 { "de", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }
, |
| 2385 { "de", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+
1:00" }, |
| 2386 { "de", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+01:00", "+1:0
0" }, |
| 2387 { "de", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+01:00", "+
1:00" }, |
| 2388 { "de", "Europe/London", "2004-07-15T00:00:00Z", "v", "(Vereinigtes K\\u
00f6nigreich)", "Europe/London" }, |
| 2389 { "de", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "(Vereinigtes K
\\u00f6nigreich)", "Europe/London" }, |
| 2390 |
| 2391 { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, |
| 2392 { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00
" }, |
| 2393 { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }
, |
| 2394 { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00
" }, |
| 2395 { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, |
| 2396 { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00
" }, |
| 2397 { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }
, |
| 2398 { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00
" }, |
| 2399 { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-03:00", "-3:00" }
, |
| 2400 { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00
" }, |
| 2401 |
| 2402 // JB#5150 |
| 2403 { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }
, |
| 2404 { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+
5:30" }, |
| 2405 { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+05:30", "+5:3
0" }, |
| 2406 { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "GMT+05:30", "+
5:30" }, |
| 2407 { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }
, |
| 2408 { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+
5:30" }, |
| 2409 { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+05:30", "+05:
30" }, |
| 2410 { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "GMT+05:30", "+
5:30" }, |
| 2411 { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "(Indien)", "Asia/
Calcutta" }, |
| 2412 { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "(Indien)", "As
ia/Calcutta" }, |
| 2413 |
| 2414 // ========== |
| 2415 |
| 2416 { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8
:00" }, |
| 2417 { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\
\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0800", "-8:00" }, |
| 2418 { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6
797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0800", "America/Los_Angeles" }, |
| 2419 { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "\\u592a\
\u5e73\\u6d0b\\u6807\\u51c6\\u65f6\\u95f4", "America/Los_Angeles" }, |
| 2420 { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7
:00" }, |
| 2421 { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\
\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0700", "-7:00" }, |
| 2422 { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6
797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0700", "America/Los_Angeles" }, |
| 2423 { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "\\u592a\
\u5e73\\u6d0b\\u590f\\u4ee4\\u65f6\\u95f4", "America/Los_Angeles" }, |
| 2424 // icu zh.txt has exemplar city for this time zone |
| 2425 { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "\\u7f8e\\u5
6fd (\\u6d1b\\u6749\\u77f6)", "America/Los_Angeles" }, |
| 2426 { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\\u7f8e\
\u56fd\\u592a\\u5e73\\u6d0b\\u65f6\\u95f4", "America/Los_Angeles" }, |
| 2427 |
| 2428 { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "
-0300", "-3:00" }, |
| 2429 { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ"
, "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, |
| 2430 { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "
\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, |
| 2431 { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz"
, "\\u963f\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "-3:00" }, |
| 2432 { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "
-0300", "-3:00" }, |
| 2433 { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ"
, "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, |
| 2434 { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "
\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, |
| 2435 { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz"
, "\\u963f\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "-3:00" }, |
| 2436 { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "
\\u963f\\u6839\\u5ef7 (\\u5e03\\u5b9c\\u8bfa\\u65af\\u827e\\u5229\\u65af)", "Ame
rica/Buenos_Aires" }, |
| 2437 { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv"
, "\\u963f\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "America/Buenos_Aires" }, |
| 2438 |
| 2439 { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-
3:00" }, |
| 2440 { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c
\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, |
| 2441 { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "\\u683c\\u
6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, |
| 2442 { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u963f
\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "-3:00" }, |
| 2443 { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-
3:00" }, |
| 2444 { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c
\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, |
| 2445 { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "\\u683c\\u
6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, |
| 2446 { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u963f
\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "-3:00" }, |
| 2447 { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u963f\\u
6839\\u5ef7 (\\u5e03\\u5b9c\\u8bfa\\u65af\\u827e\\u5229\\u65af)", "America/Bueno
s_Aires" }, |
| 2448 { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u963f
\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "America/Buenos_Aires" }, |
| 2449 |
| 2450 { "zh", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00"
}, |
| 2451 { "zh", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u679
7\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0500", "-5:00" }, |
| 2452 { "zh", "America/Havana", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\
u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0500", "-5:00" }, |
| 2453 { "zh", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "\\u53e4\\u5df
4\\u6807\\u51c6\\u65f6\\u95f4", "-5:00" }, |
| 2454 { "zh", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00"
}, |
| 2455 { "zh", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u679
7\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0400", "-4:00" }, |
| 2456 { "zh", "America/Havana", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\
u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0400", "-4:00" }, |
| 2457 { "zh", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "\\u53e4\\u5df
4\\u590f\\u4ee4\\u65f6\\u95f4", "-4:00" }, |
| 2458 { "zh", "America/Havana", "2004-07-15T00:00:00Z", "v", "\\u53e4\\u5df4\\
u65f6\\u95f4", "America/Havana" }, |
| 2459 { "zh", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\\u53e4\\u5df
4\\u65f6\\u95f4", "America/Havana" }, |
| 2460 |
| 2461 { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00"
}, |
| 2462 { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797
\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1100", "+11:00" }, |
| 2463 { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u
5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1100", "+11:00" }, |
| 2464 { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "\\u6fb3\\u5927
\\u5229\\u4e9a\\u4e1c\\u90e8\\u590f\\u4ee4\\u65f6\\u95f4", "+11:00" }, |
| 2465 { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00"
}, |
| 2466 { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797
\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1000", "+10:00" }, |
| 2467 { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u
5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1000", "+10:00" }, |
| 2468 { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "\\u6fb3\\u5927
\\u5229\\u4e9a\\u4e1c\\u90e8\\u6807\\u51c6\\u65f6\\u95f4", "+10:00" }, |
| 2469 // icu zh.txt does not have info for this time zone |
| 2470 { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\\u6fb3\\u5927\\u
5229\\u4e9a (\\u6089\\u5c3c)", "Australia/Sydney" }, |
| 2471 { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\\u6fb3\\u5927
\\u5229\\u4e9a\\u4e1c\\u90e8\\u65f6\\u95f4", "Australia/Sydney" }, |
| 2472 |
| 2473 { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:0
0" }, |
| 2474 { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6
797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1100", "+11:00" }, |
| 2475 { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797
\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1100", "+11:00" }, |
| 2476 { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "\\u6fb3\\u5
927\\u5229\\u4e9a\\u4e1c\\u90e8\\u590f\\u4ee4\\u65f6\\u95f4", "+11:00" }, |
| 2477 { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:0
0" }, |
| 2478 { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6
797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1000", "+10:00" }, |
| 2479 { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797
\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1000", "+10:00" }, |
| 2480 { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "\\u6fb3\\u5
927\\u5229\\u4e9a\\u4e1c\\u90e8\\u6807\\u51c6\\u65f6\\u95f4", "+10:00" }, |
| 2481 { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\\u6fb3\\u5927
\\u5229\\u4e9a (\\u6089\\u5c3c)", "Australia/Sydney" }, |
| 2482 { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\\u6fb3\\u5
927\\u5229\\u4e9a\\u4e1c\\u90e8\\u65f6\\u95f4", "Australia/Sydney" }, |
| 2483 |
| 2484 { "zh", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }
, |
| 2485 { "zh", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797
\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0000", "+0:00" }, |
| 2486 { "zh", "Europe/London", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u
5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0000", "+0:00" }, |
| 2487 { "zh", "Europe/London", "2004-01-15T00:00:00Z", "V", "GMT", "+0:00" }, |
| 2488 { "zh", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "\\u683C\\u6797
\\u5C3C\\u6CBB\\u6807\\u51C6\\u65F6\\u95F4", "+0:00" }, |
| 2489 { "zh", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }
, |
| 2490 { "zh", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797
\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0100", "+1:00" }, |
| 2491 { "zh", "Europe/London", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u
5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0100", "+1:00" }, |
| 2492 { "zh", "Europe/London", "2004-07-15T00:00:00Z", "V", "BST", "+1:00" }, |
| 2493 { "zh", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "\\u683c\\u6797
\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0100", "+1:00" }, |
| 2494 { "zh", "Europe/London", "2004-07-15T00:00:00Z", "v", "\\u82f1\\u56fd\\u
65f6\\u95f4", "Europe/London" }, |
| 2495 { "zh", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\\u82f1\\u56fd
\\u65f6\\u95f4", "Europe/London" }, |
| 2496 { "zh", "Europe/London", "2004-07-15T00:00:00Z", "VVVV", "\\u82f1\\u56fd
\\u65f6\\u95f4", "Europe/London" }, |
| 2497 |
| 2498 { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, |
| 2499 { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5
c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, |
| 2500 { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c
\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, |
| 2501 { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "\\u683c\\u6797\\u5
c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, |
| 2502 { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, |
| 2503 { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5
c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, |
| 2504 { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c
\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, |
| 2505 { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "\\u683c\\u6797\\u5
c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, |
| 2506 { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "\\u683c\\u6797\\u5c3c
\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, |
| 2507 { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "\\u683c\\u6797\\u5
c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, |
| 2508 |
| 2509 // JB#5150 |
| 2510 { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }
, |
| 2511 { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797
\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0530", "+5:30" }, |
| 2512 { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u
5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0530", "+5:30" }, |
| 2513 { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "\\u5370\\u5ea6
\\u6807\\u51c6\\u65f6\\u95f4", "+5:30" }, |
| 2514 { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }
, |
| 2515 { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797
\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0530", "+5:30" }, |
| 2516 { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u
5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0530", "+05:30" }, |
| 2517 { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "\\u5370\\u5ea6
\\u6807\\u51c6\\u65f6\\u95f4", "+5:30" }, |
| 2518 { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "\\u5370\\u5ea6\\u
65f6\\u95f4", "Asia/Calcutta" }, |
| 2519 { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\\u5370\\u5ea6
\\u6807\\u51c6\\u65f6\\u95f4", "Asia/Calcutta" }, |
| 2520 |
| 2521 // ========== |
| 2522 |
| 2523 { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8
:00" }, |
| 2524 { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\\u0
966\\u096e:\\u0966\\u0966", "-8:00" }, |
| 2525 { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-\\u0966
\\u096e:\\u0966\\u0966", "-8:00" }, |
| 2526 { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "GMT-\\u0
966\\u096e:\\u0966\\u0966", "-8:00" }, |
| 2527 { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7
:00" }, |
| 2528 { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\\u0
966\\u096d:\\u0966\\u0966", "-7:00" }, |
| 2529 { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-\\u0966
\\u096d:\\u0966\\u0966", "-7:00" }, |
| 2530 { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "GMT-\\u0
966\\u096d:\\u0966\\u0966", "-7:00" }, |
| 2531 { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "\\u0938\\u0
902\\u092f\\u0941\\u0915\\u094d\\u0924 \\u0930\\u093e\\u091c\\u094d\\u092f \\u09
05\\u092e\\u0947\\u0930\\u093f\\u0915\\u093e (\\u0932\\u094b\\u0938 \\u090f\\u09
02\\u091c\\u093f\\u0932\\u0947\\u0938)", "America/Los_Angeles" }, |
| 2532 { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\\u0938\
\u0902\\u092f\\u0941\\u0915\\u094d\\u0924 \\u0930\\u093e\\u091c\\u094d\\u092f \\
u0905\\u092e\\u0947\\u0930\\u093f\\u0915\\u093e (\\u0932\\u094b\\u0938 \\u090f\\
u0902\\u091c\\u093f\\u0932\\u0947\\u0938)", "America/Los_Angeles" }, |
| 2533 |
| 2534 { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "
-0300", "-3:00" }, |
| 2535 { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ"
, "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, |
| 2536 { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "
GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, |
| 2537 { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz"
, "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, |
| 2538 { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "
-0300", "-3:00" }, |
| 2539 { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ"
, "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, |
| 2540 { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "
GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, |
| 2541 { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz"
, "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, |
| 2542 { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "
\\u0905\\u0930\\u094d\\u091c\\u0947\\u0928\\u094d\\u091f\\u0940\\u0928\\u093e (\
\u092c\\u094d\\u092f\\u0942\\u0928\\u0938 \\u0906\\u092f\\u0930\\u0938)", "Ameri
ca/Buenos_Aires" }, |
| 2543 { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv"
, "\\u0905\\u0930\\u094d\\u091c\\u0947\\u0928\\u094d\\u091f\\u0940\\u0928\\u093e
(\\u092c\\u094d\\u092f\\u0942\\u0928\\u0938 \\u0906\\u092f\\u0930\\u0938)", "Am
erica/Buenos_Aires" }, |
| 2544 |
| 2545 { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-
3:00" }, |
| 2546 { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\\u
0966\\u0969:\\u0966\\u0966", "-3:00" }, |
| 2547 { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-\\u096
6\\u0969:\\u0966\\u0966", "-3:00" }, |
| 2548 { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-\\u
0966\\u0969:\\u0966\\u0966", "-3:00" }, |
| 2549 { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-
3:00" }, |
| 2550 { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\\u
0966\\u0969:\\u0966\\u0966", "-3:00" }, |
| 2551 { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-\\u096
6\\u0969:\\u0966\\u0966", "-3:00" }, |
| 2552 { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-\\u
0966\\u0969:\\u0966\\u0966", "-3:00" }, |
| 2553 { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u0905\\u
0930\\u094d\\u091c\\u0947\\u0928\\u094d\\u091f\\u0940\\u0928\\u093e (\\u092c\\u0
94d\\u092f\\u0942\\u0928\\u0938 \\u0906\\u092f\\u0930\\u0938)", "America/Buenos_
Aires" }, |
| 2554 { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u0905
\\u0930\\u094d\\u091c\\u0947\\u0928\\u094d\\u091f\\u0940\\u0928\\u093e (\\u092c\
\u094d\\u092f\\u0942\\u0928\\u0938 \\u0906\\u092f\\u0930\\u0938)", "America/Buen
os_Aires" }, |
| 2555 |
| 2556 { "hi", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00"
}, |
| 2557 { "hi", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\
u096b:\\u0966\\u0966", "-5:00" }, |
| 2558 { "hi", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-\\u0966\\u09
6b:\\u0966\\u0966", "-5:00" }, |
| 2559 { "hi", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-\\u0966\\
u096b:\\u0966\\u0966", "-5:00" }, |
| 2560 { "hi", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00"
}, |
| 2561 { "hi", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\
u096a:\\u0966\\u0966", "-4:00" }, |
| 2562 { "hi", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-\\u0966\\u09
6a:\\u0966\\u0966", "-4:00" }, |
| 2563 { "hi", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-\\u0966\\
u096a:\\u0966\\u0966", "-4:00" }, |
| 2564 { "hi", "America/Havana", "2004-07-15T00:00:00Z", "v", "(\\u0915\\u094d\
\u092f\\u0942\\u092c\\u093e)", "America/Havana" }, |
| 2565 { "hi", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "(\\u0915\\u09
4d\\u092f\\u0942\\u092c\\u093e)", "America/Havana" }, |
| 2566 |
| 2567 { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00"
}, |
| 2568 { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+\\u0967\\u
0967:\\u0966\\u0966", "+11:00" }, |
| 2569 { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+\\u0967\\u096
7:\\u0966\\u0966", "+11:00" }, |
| 2570 { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "GMT+\\u0967\\u
0967:\\u0966\\u0966", "+11:00" }, |
| 2571 { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00"
}, |
| 2572 { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+\\u0967\\u
0966:\\u0966\\u0966", "+10:00" }, |
| 2573 { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+\\u0967\\u096
6:\\u0966\\u0966", "+10:00" }, |
| 2574 { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "GMT+\\u0967\\u
0966:\\u0966\\u0966", "+10:00" }, |
| 2575 { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\\u0911\\u0938\\u
094d\\u091f\\u094d\\u0930\\u0947\\u0932\\u093f\\u092f\\u093e (\\u0938\\u093f\\u0
921\\u0928\\u0940)", "Australia/Sydney" }, |
| 2576 { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\\u0911\\u0938
\\u094d\\u091f\\u094d\\u0930\\u0947\\u0932\\u093f\\u092f\\u093e (\\u0938\\u093f\
\u0921\\u0928\\u0940)", "Australia/Sydney" }, |
| 2577 |
| 2578 { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:0
0" }, |
| 2579 { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+\\u0967
\\u0967:\\u0966\\u0966", "+11:00" }, |
| 2580 { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+\\u0967\\u
0967:\\u0966\\u0966", "+11:00" }, |
| 2581 { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "GMT+\\u0967
\\u0967:\\u0966\\u0966", "+11:00" }, |
| 2582 { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:0
0" }, |
| 2583 { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+\\u0967
\\u0966:\\u0966\\u0966", "+10:00" }, |
| 2584 { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+\\u0967\\u
0966:\\u0966\\u0966", "+10:00" }, |
| 2585 { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "GMT+\\u0967
\\u0966:\\u0966\\u0966", "+10:00" }, |
| 2586 { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\\u0911\\u0938
\\u094d\\u091f\\u094d\\u0930\\u0947\\u0932\\u093f\\u092f\\u093e (\\u0938\\u093f\
\u0921\\u0928\\u0940)", "Australia/Sydney" }, |
| 2587 { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\\u0911\\u0
938\\u094d\\u091f\\u094d\\u0930\\u0947\\u0932\\u093f\\u092f\\u093e (\\u0938\\u09
3f\\u0921\\u0928\\u0940)", "Australia/Sydney" }, |
| 2588 |
| 2589 { "hi", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }
, |
| 2590 { "hi", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+\\u0966\\u
0966:\\u0966\\u0966", "+0:00" }, |
| 2591 { "hi", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT+\\u0966\\u096
6:\\u0966\\u0966", "+0:00" }, |
| 2592 { "hi", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "GMT+\\u0966\\u
0966:\\u0966\\u0966", "+0:00" }, |
| 2593 { "hi", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }
, |
| 2594 { "hi", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+\\u0966\\u
0967:\\u0966\\u0966", "+1:00" }, |
| 2595 { "hi", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+\\u0966\\u096
7:\\u0966\\u0966", "+1:00" }, |
| 2596 { "hi", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+\\u0966\\u
0967:\\u0966\\u0966", "+1:00" }, |
| 2597 { "hi", "Europe/London", "2004-07-15T00:00:00Z", "v", "(\\u092C\\u094D\\
u0930\\u093F\\u0924\\u0928)", "Europe/London" }, |
| 2598 { "hi", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "(\\u092C\\u094
D\\u0930\\u093F\\u0924\\u0928)", "Europe/London" }, |
| 2599 |
| 2600 { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, |
| 2601 { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u0969
:\\u0966\\u0966", "-3:00" }, |
| 2602 { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-\\u0966\\u0969:\\
u0966\\u0966", "-3:00" }, |
| 2603 { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-\\u0966\\u0969
:\\u0966\\u0966", "-3:00" }, |
| 2604 { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, |
| 2605 { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u0969
:\\u0966\\u0966", "-3:00" }, |
| 2606 { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-\\u0966\\u0969:\\
u0966\\u0966", "-3:00" }, |
| 2607 { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-\\u0966\\u0969
:\\u0966\\u0966", "-3:00" }, |
| 2608 { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-\\u0966\\u0969:\\
u0966\\u0966", "-3:00" }, |
| 2609 { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-\\u0966\\u0969
:\\u0966\\u0966", "-3:00" }, |
| 2610 |
| 2611 { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }
, |
| 2612 { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+\\u0966\\u
096B:\\u0969\\u0966", "+5:30" }, |
| 2613 { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "IST", "+5:30" }, |
| 2614 { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "\\u092D\\u093E
\\u0930\\u0924\\u0940\\u092F \\u0938\\u092E\\u092F", "+5:30" }, |
| 2615 { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }
, |
| 2616 { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+\\u0966\\u
096B:\\u0969\\u0966", "+5:30" }, |
| 2617 { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "IST", "+05:30" }, |
| 2618 { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "\\u092D\\u093E
\\u0930\\u0924\\u0940\\u092F \\u0938\\u092E\\u092F", "+5:30" }, |
| 2619 { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "IST", "Asia/Calcu
tta" }, |
| 2620 { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\\u092D\\u093E
\\u0930\\u0924\\u0940\\u092F \\u0938\\u092E\\u092F", "Asia/Calcutta" }, |
| 2621 |
| 2622 // ========== |
| 2623 |
| 2624 { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8
:00" }, |
| 2625 { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\
\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0800", "-8:00" }, |
| 2626 { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0
440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0800", "America/Los_Angeles" }, |
| 2627 { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "V", "PST", "Amer
ica/Los_Angeles" }, |
| 2628 { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "\\u0422\
\u0438\\u0445\\u043E\\u043E\\u043A\\u0435\\u0430\\u043D\\u0441\\u043A\\u0430 \\u
0447\\u0430\\u0441\\u043E\\u0432\\u0430 \\u0437\\u043E\\u043D\\u0430", "America/
Los_Angeles" }, |
| 2629 { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7
:00" }, |
| 2630 { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\
\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0700", "-7:00" }, |
| 2631 { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0
440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0700", "America/Los_Angeles" }, |
| 2632 { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "V", "PDT", "Amer
ica/Los_Angeles" }, |
| 2633 { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "\\u0422\
\u0438\\u0445\\u043E\\u043E\\u043A\\u0435\\u0430\\u043D\\u0441\\u043A\\u0430 \\u
043B\\u044F\\u0442\\u043D\\u0430 \\u0447\\u0430\\u0441\\u043E\\u0432\\u0430 \\u0
437\\u043E\\u043D\\u0430", "America/Los_Angeles" }, |
| 2634 // icu bg.txt has exemplar city for this time zone |
| 2635 { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "\\u0421\\u0
410\\u0429 (\\u041b\\u043e\\u0441 \\u0410\\u043d\\u0436\\u0435\\u043b\\u0438\\u0
441)", "America/Los_Angeles" }, |
| 2636 { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\\u0421\
\u0410\\u0429 (\\u041b\\u043e\\u0441 \\u0410\\u043d\\u0436\\u0435\\u043b\\u0438\
\u0441)", "America/Los_Angeles" }, |
| 2637 { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "VVVV", "\\u0421\
\u0410\\u0429 (\\u041b\\u043e\\u0441 \\u0410\\u043d\\u0436\\u0435\\u043b\\u0438\
\u0441)", "America/Los_Angeles" }, |
| 2638 |
| 2639 { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "
-0300", "-3:00" }, |
| 2640 { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ"
, "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, |
| 2641 { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "
\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, |
| 2642 { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz"
, "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, |
| 2643 { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "
-0300", "-3:00" }, |
| 2644 { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ"
, "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, |
| 2645 { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "
\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, |
| 2646 { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz"
, "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, |
| 2647 { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "
\\u0410\\u0440\\u0436\\u0435\\u043d\\u0442\\u0438\\u043d\\u0430 (\\u0411\\u0443\
\u0435\\u043D\\u043E\\u0441 \\u0410\\u0439\\u0440\\u0435\\u0441)", "America/Buen
os_Aires" }, |
| 2648 { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv"
, "\\u0410\\u0440\\u0436\\u0435\\u043d\\u0442\\u0438\\u043d\\u0430 (\\u0411\\u04
43\\u0435\\u043D\\u043E\\u0441 \\u0410\\u0439\\u0440\\u0435\\u0441)", "America/B
uenos_Aires" }, |
| 2649 |
| 2650 { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-
3:00" }, |
| 2651 { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413
\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, |
| 2652 { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "\\u0413\\u
0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, |
| 2653 { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u0413
\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, |
| 2654 { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-
3:00" }, |
| 2655 { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413
\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, |
| 2656 { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "\\u0413\\u
0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, |
| 2657 { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u0413
\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, |
| 2658 // icu bg.txt does not have info for this time zone |
| 2659 { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u0410\\u
0440\\u0436\\u0435\\u043d\\u0442\\u0438\\u043d\\u0430 (\\u0411\\u0443\\u0435\\u0
43D\\u043E\\u0441 \\u0410\\u0439\\u0440\\u0435\\u0441)", "America/Buenos_Aires"
}, |
| 2660 { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u0410
\\u0440\\u0436\\u0435\\u043d\\u0442\\u0438\\u043d\\u0430 (\\u0411\\u0443\\u0435\
\u043D\\u043E\\u0441 \\u0410\\u0439\\u0440\\u0435\\u0441)", "America/Buenos_Aire
s" }, |
| 2661 |
| 2662 { "bg", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00"
}, |
| 2663 { "bg", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u044
0\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0500", "-5:00" }, |
| 2664 { "bg", "America/Havana", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\
u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0500", "-5:00" }, |
| 2665 { "bg", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "\\u0413\\u044
0\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0500", "-5:00" }, |
| 2666 { "bg", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00"
}, |
| 2667 { "bg", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u044
0\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0400", "-4:00" }, |
| 2668 { "bg", "America/Havana", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\
u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0400", "-4:00" }, |
| 2669 { "bg", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u044
0\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0400", "-4:00" }, |
| 2670 { "bg", "America/Havana", "2004-07-15T00:00:00Z", "v", "(\\u041a\\u0443\
\u0431\\u0430)", "America/Havana" }, |
| 2671 { "bg", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "(\\u041a\\u04
43\\u0431\\u0430)", "America/Havana" }, |
| 2672 |
| 2673 { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00"
}, |
| 2674 { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440
\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1100", "+11:00" }, |
| 2675 { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u
0438\\u0438\\u043D\\u0443\\u0438\\u0447+1100", "+11:00" }, |
| 2676 { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "\\u0413\\u0440
\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1100", "+11:00" }, |
| 2677 { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00"
}, |
| 2678 { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440
\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1000", "+10:00" }, |
| 2679 { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u
0438\\u0438\\u043D\\u0443\\u0438\\u0447+1000", "+10:00" }, |
| 2680 { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u0440
\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1000", "+10:00" }, |
| 2681 { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\\u0410\\u0432\\u
0441\\u0442\\u0440\\u0430\\u043b\\u0438\\u044f (\\u0421\\u0438\\u0434\\u043D\\u0
438)", "Australia/Sydney" }, |
| 2682 { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\\u0410\\u0432
\\u0441\\u0442\\u0440\\u0430\\u043b\\u0438\\u044f (\\u0421\\u0438\\u0434\\u043D\
\u0438)", "Australia/Sydney" }, |
| 2683 |
| 2684 { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:0
0" }, |
| 2685 { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0
440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1100", "+11:00" }, |
| 2686 { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440
\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1100", "+11:00" }, |
| 2687 { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "\\u0413\\u0
440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1100", "+11:00" }, |
| 2688 { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:0
0" }, |
| 2689 { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0
440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1000", "+10:00" }, |
| 2690 { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440
\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1000", "+10:00" }, |
| 2691 { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u0
440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1000", "+10:00" }, |
| 2692 { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\\u0410\\u0432
\\u0441\\u0442\\u0440\\u0430\\u043b\\u0438\\u044f (\\u0421\\u0438\\u0434\\u043D\
\u0438)", "Australia/Sydney" }, |
| 2693 { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\\u0410\\u0
432\\u0441\\u0442\\u0440\\u0430\\u043b\\u0438\\u044f (\\u0421\\u0438\\u0434\\u04
3D\\u0438)", "Australia/Sydney" }, |
| 2694 |
| 2695 { "bg", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }
, |
| 2696 { "bg", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440
\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0000", "+0:00" }, |
| 2697 { "bg", "Europe/London", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u
0438\\u0438\\u043D\\u0443\\u0438\\u0447+0000", "+0:00" }, |
| 2698 { "bg", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "\\u0427\\u0430
\\u0441\\u043E\\u0432\\u0430 \\u0437\\u043E\\u043D\\u0430 \\u0413\\u0440\\u0438\
\u043D\\u0443\\u0438\\u0447", "+0:00" }, |
| 2699 { "bg", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }
, |
| 2700 { "bg", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440
\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0100", "+1:00" }, |
| 2701 { "bg", "Europe/London", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u
0438\\u0438\\u043D\\u0443\\u0438\\u0447+0100", "+1:00" }, |
| 2702 { "bg", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u0440
\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0100", "+1:00" }, |
| 2703 { "bg", "Europe/London", "2004-07-15T00:00:00Z", "v", "(\\u041e\\u0431\\
u0435\\u0434\\u0438\\u043d\\u0435\\u043d\\u043e \\u043a\\u0440\\u0430\\u043b\\u0
441\\u0442\\u0432\\u043e)", "Europe/London" }, |
| 2704 { "bg", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "(\\u041e\\u043
1\\u0435\\u0434\\u0438\\u043d\\u0435\\u043d\\u043e \\u043a\\u0440\\u0430\\u043b\
\u0441\\u0442\\u0432\\u043e)", "Europe/London" }, |
| 2705 |
| 2706 { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, |
| 2707 { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0
438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, |
| 2708 { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438
\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, |
| 2709 { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0
438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, |
| 2710 { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, |
| 2711 { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0
438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, |
| 2712 { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438
\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, |
| 2713 { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0
438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, |
| 2714 { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "\\u0413\\u0440\\u0438
\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, |
| 2715 { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "\\u0413\\u0440\\u0
438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, |
| 2716 |
| 2717 // JB#5150 |
| 2718 { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }
, |
| 2719 { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440
\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0530", "+5:30" }, |
| 2720 { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u
0438\\u0438\\u043D\\u0443\\u0438\\u0447+0530", "+5:30" }, |
| 2721 { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "\\u0413\\u0440
\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0530", "+5:30" }, |
| 2722 { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }
, |
| 2723 { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440
\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0530", "+5:30" }, |
| 2724 { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u
0438\\u0438\\u043D\\u0443\\u0438\\u0447+0530", "+05:30" }, |
| 2725 { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u0440
\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0530", "+5:30" }, |
| 2726 { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "(\\u0418\\u043D\\
u0434\\u0438\\u044F)", "Asia/Calcutta" }, |
| 2727 { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "(\\u0418\\u043
D\\u0434\\u0438\\u044F)", "Asia/Calcutta" }, |
| 2728 // ========== |
| 2729 |
| 2730 { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8
:00" }, |
| 2731 { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:0
0", "-8:00" }, |
| 2732 { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-08:00",
"America/Los_Angeles" }, |
| 2733 { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "V", "PST", "Amer
ica/Los_Angeles" }, |
| 2734 { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "\\u30a2\
\u30e1\\u30ea\\u30ab\\u592a\\u5e73\\u6d0b\\u6a19\\u6e96\\u6642", "America/Los_An
geles" }, |
| 2735 { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7
00" }, |
| 2736 { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:0
0", "-7:00" }, |
| 2737 { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-07:00",
"America/Los_Angeles" }, |
| 2738 { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "V", "PDT", "Amer
ica/Los_Angeles" }, |
| 2739 { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "\\u30a2\
\u30e1\\u30ea\\u30ab\\u592a\\u5e73\\u6d0b\\u590f\\u6642\\u9593", "America/Los_An
geles" }, |
| 2740 // icu ja.txt has exemplar city for this time zone |
| 2741 { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "\\u30A2\\u3
0E1\\u30EA\\u30AB\\u5408\\u8846\\u56FD (\\u30ed\\u30b5\\u30f3\\u30bc\\u30eb\\u30
b9)", "America/Los_Angeles" }, |
| 2742 { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\\u30A2\
\u30E1\\u30EA\\u30AB\\u592A\\u5e73\\u6D0B\\u6642\\u9593", "America/Los_Angeles"
}, |
| 2743 { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "VVVV", "\\u30A2\
\u30E1\\u30EA\\u30AB\\u5408\\u8846\\u56FD (\\u30ed\\u30b5\\u30f3\\u30bc\\u30eb\\
u30b9)", "America/Los_Angeles" }, |
| 2744 |
| 2745 { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "
-0300", "-3:00" }, |
| 2746 { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ"
, "GMT-03:00", "-3:00" }, |
| 2747 { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "
GMT-03:00", "-3:00" }, |
| 2748 { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz"
, "GMT-03:00", "-3:00" }, |
| 2749 { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "
-0300", "-3:00" }, |
| 2750 { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ"
, "GMT-03:00", "-3:00" }, |
| 2751 { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "
GMT-03:00", "-3:00" }, |
| 2752 { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz"
, "GMT-03:00", "-3:00" }, |
| 2753 // icu ja.txt does not have info for this time zone |
| 2754 { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "
\\u30a2\\u30eb\\u30bc\\u30f3\\u30c1\\u30f3 (\\u30D6\\u30A8\\u30CE\\u30B9\\u30A2\
\u30A4\\u30EC\\u30B9)", "America/Buenos_Aires" }, |
| 2755 { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv"
, "\\u30a2\\u30eb\\u30bc\\u30f3\\u30c1\\u30f3\\u6642\\u9593", "America/Buenos_Ai
res" }, |
| 2756 |
| 2757 { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-
3:00" }, |
| 2758 { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:
00", "-3:00" }, |
| 2759 { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00"
, "-3:00" }, |
| 2760 { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:
00", "-3:00" }, |
| 2761 { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-
3:00" }, |
| 2762 { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:
00", "-3:00" }, |
| 2763 { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00"
, "-3:00" }, |
| 2764 { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:
00", "-3:00" }, |
| 2765 { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u30a2\\u
30eb\\u30bc\\u30f3\\u30c1\\u30f3 (\\u30D6\\u30A8\\u30CE\\u30B9\\u30A2\\u30A4\\u3
0EC\\u30B9)", "America/Buenos_Aires" }, |
| 2766 { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u30a2
\\u30eb\\u30bc\\u30f3\\u30c1\\u30f3\\u6642\\u9593", "America/Buenos_Aires" }, |
| 2767 |
| 2768 { "ja", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00"
}, |
| 2769 { "ja", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "
-5:00" }, |
| 2770 { "ja", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-05:00", "-5:
00" }, |
| 2771 { "ja", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-05:00", "
-5:00" }, |
| 2772 { "ja", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00"
}, |
| 2773 { "ja", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "
-4:00" }, |
| 2774 { "ja", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-04:00", "-4:
00" }, |
| 2775 { "ja", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-04:00", "
-4:00" }, |
| 2776 { "ja", "America/Havana", "2004-07-15T00:00:00Z", "v", "\\u30ad\\u30e5\\
u30fc\\u30d0\\u6642\\u9593", "America/Havana" }, |
| 2777 { "ja", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\\u30ad\\u30e
5\\u30fc\\u30d0\\u6642\\u9593", "America/Havana" }, |
| 2778 |
| 2779 { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00"
}, |
| 2780 { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+
11:00" }, |
| 2781 { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:
00" }, |
| 2782 { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+
11:00" }, |
| 2783 { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00"
}, |
| 2784 { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+
10:00" }, |
| 2785 { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:
00" }, |
| 2786 { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+
10:00" }, |
| 2787 // icu ja.txt does not have info for this time zone |
| 2788 { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\\u30aa\\u30fc\\u
30b9\\u30c8\\u30e9\\u30ea\\u30a2 (\\u30b7\\u30c9\\u30cb\\u30fc)", "Australia/Syd
ney" }, |
| 2789 { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\\u30aa\\u30fc
\\u30b9\\u30c8\\u30e9\\u30ea\\u30a2 (\\u30b7\\u30c9\\u30cb\\u30fc)", "Australia/
Sydney" }, |
| 2790 |
| 2791 { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:0
0" }, |
| 2792 { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00",
"+11:00" }, |
| 2793 { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+
11:00" }, |
| 2794 { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00",
"+11:00" }, |
| 2795 { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:0
0" }, |
| 2796 { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00",
"+10:00" }, |
| 2797 { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+
10:00" }, |
| 2798 { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00",
"+10:00" }, |
| 2799 { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\\u30aa\\u30fc
\\u30b9\\u30c8\\u30e9\\u30ea\\u30a2 (\\u30b7\\u30c9\\u30cb\\u30fc)", "Australia/
Sydney" }, |
| 2800 { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\\u30aa\\u3
0fc\\u30b9\\u30c8\\u30e9\\u30ea\\u30a2 (\\u30b7\\u30c9\\u30cb\\u30fc)", "Austral
ia/Sydney" }, |
| 2801 |
| 2802 { "ja", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }
, |
| 2803 { "ja", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+00:00", "+
0:00" }, |
| 2804 { "ja", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT+00:00", "+0:0
0" }, |
| 2805 { "ja", "Europe/London", "2004-01-15T00:00:00Z", "V", "GMT", "+0:00" }, |
| 2806 { "ja", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "\\u30B0\\u30EA
\\u30CB\\u30C3\\u30B8\\u6A19\\u6E96\\u6642", "+0:00" }, |
| 2807 { "ja", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }
, |
| 2808 { "ja", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+
1:00" }, |
| 2809 { "ja", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+01:00", "+1:0
0" }, |
| 2810 { "ja", "Europe/London", "2004-07-15T00:00:00Z", "V", "GMT+01:00", "+1:0
0" }, |
| 2811 { "ja", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+01:00", "+
1:00" }, |
| 2812 { "ja", "Europe/London", "2004-07-15T00:00:00Z", "v", "\\u30a4\\u30ae\\u
30ea\\u30b9\\u6642\\u9593", "Europe/London" }, |
| 2813 { "ja", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\\u30a4\\u30ae
\\u30ea\\u30b9\\u6642\\u9593", "Europe/London" }, |
| 2814 { "ja", "Europe/London", "2004-07-15T00:00:00Z", "VVVV", "\\u30a4\\u30ae
\\u30ea\\u30b9\\u6642\\u9593", "Europe/London" }, |
| 2815 |
| 2816 { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, |
| 2817 { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00
" }, |
| 2818 { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }
, |
| 2819 { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00
" }, |
| 2820 { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, |
| 2821 { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00
" }, |
| 2822 { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }
, |
| 2823 { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00
" }, |
| 2824 { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-03:00", "-3:00" }
, |
| 2825 { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00
" }, |
| 2826 |
| 2827 // JB#5150 |
| 2828 { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }
, |
| 2829 { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+
5:30" }, |
| 2830 { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+05:30", "+5:3
0" }, |
| 2831 { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "GMT+05:30", "+
5:30" }, |
| 2832 { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }
, |
| 2833 { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+
5:30" }, |
| 2834 { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+05:30", "+05:
30" }, |
| 2835 { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "GMT+05:30", "+
5:30" }, |
| 2836 { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "\\u30A4\\u30F3\\u
30C9\\u6642\\u9593", "Asia/Calcutta" }, |
| 2837 { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\\u30A4\\u30F3
\\u30C9\\u6642\\u9593", "Asia/Calcutta" }, |
| 2838 |
| 2839 // ========== |
| 2840 |
| 2841 { "si", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8
:00" }, |
| 2842 { "si", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:0
0", "-8:00" }, |
| 2843 { "si", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-08:00",
"-8:00" }, |
| 2844 { "si", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "GMT-08:0
0", "-8:00" }, |
| 2845 { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7
:00" }, |
| 2846 { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:0
0", "-7:00" }, |
| 2847 { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-07:00",
"-7:00" }, |
| 2848 { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "GMT-07:0
0", "-7:00" }, |
| 2849 { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "US (Los Ang
eles)", "America/Los_Angeles" }, |
| 2850 { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "US (Los
Angeles)", "America/Los_Angeles" }, |
| 2851 |
| 2852 { "si", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "
-0300", "-3:00" }, |
| 2853 { "si", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ"
, "GMT-03:00", "-3:00" }, |
| 2854 { "si", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "
GMT-03:00", "-3:00" }, |
| 2855 { "si", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz"
, "GMT-03:00", "-3:00" }, |
| 2856 { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "
-0300", "-3:00" }, |
| 2857 { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ"
, "GMT-03:00", "-3:00" }, |
| 2858 { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "
GMT-03:00", "-3:00" }, |
| 2859 { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz"
, "GMT-03:00", "-3:00" }, |
| 2860 { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "
AR (Buenos Aires)", "America/Buenos_Aires" }, |
| 2861 { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv"
, "AR (Buenos Aires)", "America/Buenos_Aires" }, |
| 2862 |
| 2863 { "si", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-
3:00" }, |
| 2864 { "si", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:
00", "-3:00" }, |
| 2865 { "si", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00"
, "-3:00" }, |
| 2866 { "si", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:
00", "-3:00" }, |
| 2867 { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-
3:00" }, |
| 2868 { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:
00", "-3:00" }, |
| 2869 { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00"
, "-3:00" }, |
| 2870 { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:
00", "-3:00" }, |
| 2871 { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "AR (Buenos
Aires)", "America/Buenos_Aires" }, |
| 2872 { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "AR (Bue
nos Aires)", "America/Buenos_Aires" }, |
| 2873 |
| 2874 { "si", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00"
}, |
| 2875 { "si", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "
-5:00" }, |
| 2876 { "si", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-05:00", "-5:
00" }, |
| 2877 { "si", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-05:00", "
-5:00" }, |
| 2878 { "si", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00"
}, |
| 2879 { "si", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "
-4:00" }, |
| 2880 { "si", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-04:00", "-4:
00" }, |
| 2881 { "si", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-04:00", "
-4:00" }, |
| 2882 { "si", "America/Havana", "2004-07-15T00:00:00Z", "v", "(CU)", "America/
Havana" }, |
| 2883 { "si", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "(CU)", "Ameri
ca/Havana" }, |
| 2884 |
| 2885 { "si", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00"
}, |
| 2886 { "si", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+
11:00" }, |
| 2887 { "si", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:
00" }, |
| 2888 { "si", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+
11:00" }, |
| 2889 { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00"
}, |
| 2890 { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+
10:00" }, |
| 2891 { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:
00" }, |
| 2892 { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+
10:00" }, |
| 2893 { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "AU (Sydney)", "Au
stralia/Sydney" }, |
| 2894 { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "AU (Sydney)",
"Australia/Sydney" }, |
| 2895 |
| 2896 { "si", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:0
0" }, |
| 2897 { "si", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00",
"+11:00" }, |
| 2898 { "si", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+
11:00" }, |
| 2899 { "si", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00",
"+11:00" }, |
| 2900 { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:0
0" }, |
| 2901 { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00",
"+10:00" }, |
| 2902 { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+
10:00" }, |
| 2903 { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00",
"+10:00" }, |
| 2904 { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "AU (Sydney)",
"Australia/Sydney" }, |
| 2905 { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "AU (Sydney)
", "Australia/Sydney" }, |
| 2906 |
| 2907 { "si", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }
, |
| 2908 { "si", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+00:00", "+
0:00" }, |
| 2909 { "si", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT+00:00", "+0:0
0" }, |
| 2910 { "si", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "GMT+00:00", "+
0:00" }, |
| 2911 { "si", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }
, |
| 2912 { "si", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+
1:00" }, |
| 2913 { "si", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+01:00", "+1:0
0" }, |
| 2914 { "si", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+01:00", "+
1:00" }, |
| 2915 { "si", "Europe/London", "2004-07-15T00:00:00Z", "v", "(GB)", "Europe/Lo
ndon" }, |
| 2916 { "si", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "(GB)", "Europe
/London" }, |
| 2917 |
| 2918 { "si", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, |
| 2919 { "si", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00
" }, |
| 2920 { "si", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }
, |
| 2921 { "si", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00
" }, |
| 2922 { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, |
| 2923 { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00
" }, |
| 2924 { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }
, |
| 2925 { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00
" }, |
| 2926 { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-03:00", "-3:00" }
, |
| 2927 { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00
" }, |
| 2928 |
| 2929 // JB#5150 |
| 2930 { "si", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }
, |
| 2931 { "si", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+
5:30" }, |
| 2932 { "si", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+05:30", "+5:3
0" }, |
| 2933 { "si", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "GMT+05:30", "+
5:30" }, |
| 2934 { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }
, |
| 2935 { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+
5:30" }, |
| 2936 { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+05:30", "+05:
30" }, |
| 2937 { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "GMT+05:30", "+
5:30" }, |
| 2938 { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "(IN)", "Asia/Calc
utta" }, |
| 2939 { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "(IN)", "Asia/C
alcutta" }, |
| 2940 { NULL, NULL, NULL, NULL, NULL, NULL }, |
| 2941 }; |
| 2942 |
| 2943 UErrorCode status = U_ZERO_ERROR; |
| 2944 Calendar *cal = GregorianCalendar::createInstance(status); |
| 2945 if (failure(status, "GregorianCalendar::createInstance", TRUE)) return; |
| 2946 for (int i = 0; fallbackTests[i][0]; i++) { |
| 2947 const char **testLine = fallbackTests[i]; |
| 2948 UnicodeString info[5]; |
| 2949 for ( int j = 0 ; j < 5 ; j++ ) { |
| 2950 info[j] = UnicodeString(testLine[j], -1, US_INV); |
| 2951 } |
| 2952 info[4] = info[4].unescape(); |
| 2953 logln("%s;%s;%s;%s", testLine[0], testLine[1], testLine[2], testLine[3])
; |
| 2954 |
| 2955 TimeZone *tz = TimeZone::createTimeZone(info[1]); |
| 2956 |
| 2957 if (strcmp(testLine[2], "2004-07-15T00:00:00Z") == 0) { |
| 2958 cal->set(2004,6,15,0,0,0); |
| 2959 } else { |
| 2960 cal->set(2004,0,15,0,0,0); |
| 2961 } |
| 2962 |
| 2963 SimpleDateFormat fmt(info[3], Locale(testLine[0]),status); |
| 2964 ASSERT_OK(status); |
| 2965 cal->adoptTimeZone(tz); |
| 2966 UnicodeString result; |
| 2967 FieldPosition pos(0); |
| 2968 fmt.format(*cal,result,pos); |
| 2969 if (result != info[4]) { |
| 2970 errln(info[0] + ";" + info[1] + ";" + info[2] + ";" + info[3] + " ex
pected: '" + |
| 2971 info[4] + "' but got: '" + result + "'"); |
| 2972 } |
| 2973 } |
| 2974 delete cal; |
| 2975 } |
| 2976 |
| 2977 void DateFormatTest::TestRoundtripWithCalendar(void) { |
| 2978 UErrorCode status = U_ZERO_ERROR; |
| 2979 |
| 2980 TimeZone *tz = TimeZone::createTimeZone("Europe/Paris"); |
| 2981 TimeZone *gmt = TimeZone::createTimeZone("Etc/GMT"); |
| 2982 |
| 2983 Calendar *calendars[] = { |
| 2984 Calendar::createInstance(*tz, Locale("und@calendar=gregorian"), status), |
| 2985 Calendar::createInstance(*tz, Locale("und@calendar=buddhist"), status), |
| 2986 // Calendar::createInstance(*tz, Locale("und@calendar=hebrew"), status), |
| 2987 Calendar::createInstance(*tz, Locale("und@calendar=islamic"), status), |
| 2988 Calendar::createInstance(*tz, Locale("und@calendar=japanese"), status), |
| 2989 NULL |
| 2990 }; |
| 2991 if (U_FAILURE(status)) { |
| 2992 dataerrln("Failed to initialize calendars: %s", u_errorName(status)); |
| 2993 for (int i = 0; calendars[i] != NULL; i++) { |
| 2994 delete calendars[i]; |
| 2995 } |
| 2996 return; |
| 2997 } |
| 2998 |
| 2999 //FIXME The formatters commented out below are currently failing because of |
| 3000 // the calendar calculation problem reported by #6691 |
| 3001 |
| 3002 // The order of test formatters must match the order of calendars above. |
| 3003 DateFormat *formatters[] = { |
| 3004 DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull,
Locale("en_US")), //calendar=gregorian |
| 3005 DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull,
Locale("th_TH")), //calendar=buddhist |
| 3006 // DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFul
l, Locale("he_IL@calendar=hebrew")), |
| 3007 DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull,
Locale("ar_EG@calendar=islamic")), |
| 3008 // DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFul
l, Locale("ja_JP@calendar=japanese")), |
| 3009 NULL |
| 3010 }; |
| 3011 |
| 3012 UDate d = Calendar::getNow(); |
| 3013 UnicodeString buf; |
| 3014 FieldPosition fpos; |
| 3015 ParsePosition ppos; |
| 3016 |
| 3017 for (int i = 0; formatters[i] != NULL; i++) { |
| 3018 buf.remove(); |
| 3019 fpos.setBeginIndex(0); |
| 3020 fpos.setEndIndex(0); |
| 3021 calendars[i]->setTime(d, status); |
| 3022 |
| 3023 // Normal case output - the given calendar matches the calendar |
| 3024 // used by the formatter |
| 3025 formatters[i]->format(*calendars[i], buf, fpos); |
| 3026 UnicodeString refStr(buf); |
| 3027 |
| 3028 for (int j = 0; calendars[j] != NULL; j++) { |
| 3029 if (j == i) { |
| 3030 continue; |
| 3031 } |
| 3032 buf.remove(); |
| 3033 fpos.setBeginIndex(0); |
| 3034 fpos.setEndIndex(0); |
| 3035 calendars[j]->setTime(d, status); |
| 3036 |
| 3037 // Even the different calendar type is specified, |
| 3038 // we should get the same result. |
| 3039 formatters[i]->format(*calendars[j], buf, fpos); |
| 3040 if (refStr != buf) { |
| 3041 errln((UnicodeString)"FAIL: Different format result with a diffe
rent calendar for the same time -" |
| 3042 + "\n Reference calendar type=" + calendars[i]->getType(
) |
| 3043 + "\n Another calendar type=" + calendars[j]->getType() |
| 3044 + "\n Expected result=" + refStr |
| 3045 + "\n Actual result=" + buf); |
| 3046 } |
| 3047 } |
| 3048 |
| 3049 calendars[i]->setTimeZone(*gmt); |
| 3050 calendars[i]->clear(); |
| 3051 ppos.setErrorIndex(-1); |
| 3052 ppos.setIndex(0); |
| 3053 |
| 3054 // Normal case parse result - the given calendar matches the calendar |
| 3055 // used by the formatter |
| 3056 formatters[i]->parse(refStr, *calendars[i], ppos); |
| 3057 |
| 3058 for (int j = 0; calendars[j] != NULL; j++) { |
| 3059 if (j == i) { |
| 3060 continue; |
| 3061 } |
| 3062 calendars[j]->setTimeZone(*gmt); |
| 3063 calendars[j]->clear(); |
| 3064 ppos.setErrorIndex(-1); |
| 3065 ppos.setIndex(0); |
| 3066 |
| 3067 // Even the different calendar type is specified, |
| 3068 // we should get the same time and time zone. |
| 3069 formatters[i]->parse(refStr, *calendars[j], ppos); |
| 3070 if (calendars[i]->getTime(status) != calendars[j]->getTime(status) |
| 3071 || calendars[i]->getTimeZone() != calendars[j]->getTimeZone()) { |
| 3072 UnicodeString tzid; |
| 3073 errln((UnicodeString)"FAIL: Different parse result with a differ
ent calendar for the same string -" |
| 3074 + "\n Reference calendar type=" + calendars[i]->getType(
) |
| 3075 + "\n Another calendar type=" + calendars[j]->getType() |
| 3076 + "\n Date string=" + refStr |
| 3077 + "\n Expected time=" + calendars[i]->getTime(status) |
| 3078 + "\n Expected time zone=" + calendars[i]->getTimeZone()
.getID(tzid) |
| 3079 + "\n Actual time=" + calendars[j]->getTime(status) |
| 3080 + "\n Actual time zone=" + calendars[j]->getTimeZone().g
etID(tzid)); |
| 3081 } |
| 3082 } |
| 3083 if (U_FAILURE(status)) { |
| 3084 errln((UnicodeString)"FAIL: " + u_errorName(status)); |
| 3085 break; |
| 3086 } |
| 3087 } |
| 3088 |
| 3089 delete tz; |
| 3090 delete gmt; |
| 3091 for (int i = 0; calendars[i] != NULL; i++) { |
| 3092 delete calendars[i]; |
| 3093 } |
| 3094 for (int i = 0; formatters[i] != NULL; i++) { |
| 3095 delete formatters[i]; |
| 3096 } |
| 3097 } |
| 3098 |
| 3099 /* |
| 3100 void DateFormatTest::TestRelativeError(void) |
| 3101 { |
| 3102 UErrorCode status; |
| 3103 Locale en("en"); |
| 3104 |
| 3105 DateFormat *en_reltime_reldate = DateFormat::createDateTimeInstance(
DateFormat::kFullRelative,DateFormat::kFullRelative,en); |
| 3106 if(en_reltime_reldate == NULL) { |
| 3107 logln("PASS: rel date/rel time failed"); |
| 3108 } else { |
| 3109 errln("FAIL: rel date/rel time created, should have failed."); |
| 3110 delete en_reltime_reldate; |
| 3111 } |
| 3112 } |
| 3113 |
| 3114 void DateFormatTest::TestRelativeOther(void) |
| 3115 { |
| 3116 logln("Nothing in this test. When we get more data from CLDR, put in some te
sts of -2, +2, etc. "); |
| 3117 } |
| 3118 */ |
| 3119 |
| 3120 void DateFormatTest::Test6338(void) |
| 3121 { |
| 3122 UErrorCode status = U_ZERO_ERROR; |
| 3123 |
| 3124 SimpleDateFormat *fmt1 = new SimpleDateFormat(UnicodeString("y-M-d"), Locale
("ar"), status); |
| 3125 if (failure(status, "new SimpleDateFormat", TRUE)) return; |
| 3126 |
| 3127 UDate dt1 = date(2008-1900, UCAL_JUNE, 10, 12, 00); |
| 3128 UnicodeString str1; |
| 3129 str1 = fmt1->format(dt1, str1); |
| 3130 logln(str1); |
| 3131 |
| 3132 UDate dt11 = fmt1->parse(str1, status); |
| 3133 failure(status, "fmt->parse"); |
| 3134 |
| 3135 UnicodeString str11; |
| 3136 str11 = fmt1->format(dt11, str11); |
| 3137 logln(str11); |
| 3138 |
| 3139 if (str1 != str11) { |
| 3140 errln((UnicodeString)"FAIL: Different dates str1:" + str1 |
| 3141 + " str2:" + str11); |
| 3142 } |
| 3143 delete fmt1; |
| 3144 |
| 3145 ///////////////// |
| 3146 |
| 3147 status = U_ZERO_ERROR; |
| 3148 SimpleDateFormat *fmt2 = new SimpleDateFormat(UnicodeString("y M d"), Locale
("ar"), status); |
| 3149 failure(status, "new SimpleDateFormat"); |
| 3150 |
| 3151 UDate dt2 = date(2008-1900, UCAL_JUNE, 10, 12, 00); |
| 3152 UnicodeString str2; |
| 3153 str2 = fmt2->format(dt2, str2); |
| 3154 logln(str2); |
| 3155 |
| 3156 UDate dt22 = fmt2->parse(str2, status); |
| 3157 failure(status, "fmt->parse"); |
| 3158 |
| 3159 UnicodeString str22; |
| 3160 str22 = fmt2->format(dt22, str22); |
| 3161 logln(str22); |
| 3162 |
| 3163 if (str2 != str22) { |
| 3164 errln((UnicodeString)"FAIL: Different dates str1:" + str2 |
| 3165 + " str2:" + str22); |
| 3166 } |
| 3167 delete fmt2; |
| 3168 |
| 3169 ///////////////// |
| 3170 |
| 3171 status = U_ZERO_ERROR; |
| 3172 SimpleDateFormat *fmt3 = new SimpleDateFormat(UnicodeString("y-M-d"), Locale
("en-us"), status); |
| 3173 failure(status, "new SimpleDateFormat"); |
| 3174 |
| 3175 UDate dt3 = date(2008-1900, UCAL_JUNE, 10, 12, 00); |
| 3176 UnicodeString str3; |
| 3177 str3 = fmt3->format(dt3, str3); |
| 3178 logln(str3); |
| 3179 |
| 3180 UDate dt33 = fmt3->parse(str3, status); |
| 3181 failure(status, "fmt->parse"); |
| 3182 |
| 3183 UnicodeString str33; |
| 3184 str33 = fmt3->format(dt33, str33); |
| 3185 logln(str33); |
| 3186 |
| 3187 if (str3 != str33) { |
| 3188 errln((UnicodeString)"FAIL: Different dates str1:" + str3 |
| 3189 + " str2:" + str33); |
| 3190 } |
| 3191 delete fmt3; |
| 3192 |
| 3193 ///////////////// |
| 3194 |
| 3195 status = U_ZERO_ERROR; |
| 3196 SimpleDateFormat *fmt4 = new SimpleDateFormat(UnicodeString("y M d"), Local
e("en-us"), status); |
| 3197 failure(status, "new SimpleDateFormat"); |
| 3198 |
| 3199 UDate dt4 = date(2008-1900, UCAL_JUNE, 10, 12, 00); |
| 3200 UnicodeString str4; |
| 3201 str4 = fmt4->format(dt4, str4); |
| 3202 logln(str4); |
| 3203 |
| 3204 UDate dt44 = fmt4->parse(str4, status); |
| 3205 failure(status, "fmt->parse"); |
| 3206 |
| 3207 UnicodeString str44; |
| 3208 str44 = fmt4->format(dt44, str44); |
| 3209 logln(str44); |
| 3210 |
| 3211 if (str4 != str44) { |
| 3212 errln((UnicodeString)"FAIL: Different dates str1:" + str4 |
| 3213 + " str2:" + str44); |
| 3214 } |
| 3215 delete fmt4; |
| 3216 |
| 3217 } |
| 3218 |
| 3219 void DateFormatTest::Test6726(void) |
| 3220 { |
| 3221 // status |
| 3222 // UErrorCode status = U_ZERO_ERROR; |
| 3223 |
| 3224 // fmtf, fmtl, fmtm, fmts; |
| 3225 UnicodeString strf, strl, strm, strs; |
| 3226 UDate dt = date(2008-1900, UCAL_JUNE, 10, 12, 00); |
| 3227 |
| 3228 Locale loc("ja"); |
| 3229 DateFormat* fmtf = DateFormat::createDateTimeInstance(DateFormat::FULL, Date
Format::FULL, loc); |
| 3230 DateFormat* fmtl = DateFormat::createDateTimeInstance(DateFormat::LONG, Date
Format::FULL, loc); |
| 3231 DateFormat* fmtm = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, Da
teFormat::FULL, loc); |
| 3232 DateFormat* fmts = DateFormat::createDateTimeInstance(DateFormat::SHORT, Dat
eFormat::FULL, loc); |
| 3233 if (fmtf == NULL || fmtl == NULL || fmtm == NULL || fmts == NULL) { |
| 3234 dataerrln("Unable to create DateFormat. got NULL."); |
| 3235 /* It may not be true that if one is NULL all is NULL. Just to be safe.
*/ |
| 3236 delete fmtf; |
| 3237 delete fmtl; |
| 3238 delete fmtm; |
| 3239 delete fmts; |
| 3240 |
| 3241 return; |
| 3242 } |
| 3243 strf = fmtf->format(dt, strf); |
| 3244 strl = fmtl->format(dt, strl); |
| 3245 strm = fmtm->format(dt, strm); |
| 3246 strs = fmts->format(dt, strs); |
| 3247 |
| 3248 |
| 3249 /* Locale data is not yet updated |
| 3250 if (strf.charAt(13) == UChar(0x20)) { |
| 3251 errln((UnicodeString)"FAIL: Improper formatted date: " + strf); |
| 3252 } |
| 3253 if (strl.charAt(10) == UChar(0x20)) { |
| 3254 errln((UnicodeString)"FAIL: Improper formatted date: " + strl); |
| 3255 } |
| 3256 */ |
| 3257 logln("strm.charAt(10)=%04X wanted 0x20\n", strm.charAt(10)); |
| 3258 if (strm.charAt(10) != UChar(0x0020)) { |
| 3259 errln((UnicodeString)"FAIL: Improper formatted date: " + strm ); |
| 3260 } |
| 3261 logln("strs.charAt(10)=%04X wanted 0x20\n", strs.charAt(8)); |
| 3262 if (strs.charAt(8) != UChar(0x0020)) { |
| 3263 errln((UnicodeString)"FAIL: Improper formatted date: " + strs); |
| 3264 } |
| 3265 |
| 3266 delete fmtf; |
| 3267 delete fmtl; |
| 3268 delete fmtm; |
| 3269 delete fmts; |
| 3270 |
| 3271 return; |
| 3272 } |
| 3273 |
| 3274 /** |
| 3275 * Test DateFormat's parsing of default GMT variants. See ticket#6135 |
| 3276 */ |
| 3277 void DateFormatTest::TestGMTParsing() { |
| 3278 const char* DATA[] = { |
| 3279 "HH:mm:ss Z", |
| 3280 |
| 3281 // pattern, input, expected output (in quotes) |
| 3282 "HH:mm:ss Z", "10:20:30 GMT+03:00", "10:20:30 +0300", |
| 3283 "HH:mm:ss Z", "10:20:30 UT-02:00", "10:20:30 -0200", |
| 3284 "HH:mm:ss Z", "10:20:30 GMT", "10:20:30 +0000", |
| 3285 "HH:mm:ss vvvv", "10:20:30 UT+10:00", "10:20:30 +1000", |
| 3286 "HH:mm:ss zzzz", "10:20:30 UTC", "10:20:30 +0000", // stand
alone "UTC" |
| 3287 "ZZZZ HH:mm:ss", "UT 10:20:30", "10:20:30 +0000", |
| 3288 "V HH:mm:ss", "UT+0130 10:20:30", "10:20:30 +0130", |
| 3289 "V HH:mm:ss", "UTC+0130 10:20:30", NULL, // UTC+0
130 is not a supported pattern |
| 3290 "HH mm Z ss", "10 20 GMT-1100 30", "10:20:30 -1100", |
| 3291 }; |
| 3292 const int32_t DATA_len = sizeof(DATA)/sizeof(DATA[0]); |
| 3293 expectParse(DATA, DATA_len, Locale("en")); |
| 3294 } |
| 3295 |
| 3296 // Test case for localized GMT format parsing |
| 3297 // with no delimitters in offset format (Chinese locale) |
| 3298 void DateFormatTest::Test6880() { |
| 3299 UErrorCode status = U_ZERO_ERROR; |
| 3300 UDate d1, d2, dp1, dp2, dexp1, dexp2; |
| 3301 UnicodeString s1, s2; |
| 3302 |
| 3303 TimeZone *tz = TimeZone::createTimeZone("Asia/Shanghai"); |
| 3304 GregorianCalendar gcal(*tz, status); |
| 3305 if (failure(status, "construct GregorianCalendar", TRUE)) return; |
| 3306 |
| 3307 gcal.clear(); |
| 3308 gcal.set(1910, UCAL_JULY, 1, 12, 00); // offset 8:05:52 |
| 3309 d1 = gcal.getTime(status); |
| 3310 |
| 3311 gcal.clear(); |
| 3312 gcal.set(1950, UCAL_JULY, 1, 12, 00); // offset 8:00 |
| 3313 d2 = gcal.getTime(status); |
| 3314 |
| 3315 gcal.clear(); |
| 3316 gcal.set(1970, UCAL_JANUARY, 1, 12, 00); |
| 3317 dexp2 = gcal.getTime(status); |
| 3318 dexp1 = dexp2 - (5*60 + 52)*1000; // subtract 5m52s |
| 3319 |
| 3320 if (U_FAILURE(status)) { |
| 3321 errln("FAIL: Gregorian calendar error"); |
| 3322 } |
| 3323 |
| 3324 DateFormat *fmt = DateFormat::createTimeInstance(DateFormat::kFull, Locale("
zh")); |
| 3325 if (fmt == NULL) { |
| 3326 dataerrln("Unable to create DateFormat. Got NULL."); |
| 3327 return; |
| 3328 } |
| 3329 fmt->adoptTimeZone(tz); |
| 3330 |
| 3331 fmt->format(d1, s1); |
| 3332 fmt->format(d2, s2); |
| 3333 |
| 3334 dp1 = fmt->parse(s1, status); |
| 3335 dp2 = fmt->parse(s2, status); |
| 3336 |
| 3337 if (U_FAILURE(status)) { |
| 3338 errln("FAIL: Parse failure"); |
| 3339 } |
| 3340 |
| 3341 if (dp1 != dexp1) { |
| 3342 errln("FAIL: Failed to parse " + s1 + " parsed: " + dp1 + " expected: "
+ dexp1); |
| 3343 } |
| 3344 if (dp2 != dexp2) { |
| 3345 errln("FAIL: Failed to parse " + s2 + " parsed: " + dp2 + " expected: "
+ dexp2); |
| 3346 } |
| 3347 |
| 3348 delete fmt; |
| 3349 } |
| 3350 |
| 3351 void DateFormatTest::TestISOEra() { |
| 3352 |
| 3353 const char* data[] = { |
| 3354 // input, output |
| 3355 "BC 4004-10-23T07:00:00Z", "BC 4004-10-23T07:00:00Z", |
| 3356 "AD 4004-10-23T07:00:00Z", "AD 4004-10-23T07:00:00Z", |
| 3357 "-4004-10-23T07:00:00Z" , "BC 4005-10-23T07:00:00Z", |
| 3358 "4004-10-23T07:00:00Z" , "AD 4004-10-23T07:00:00Z", |
| 3359 }; |
| 3360 |
| 3361 int32_t numData = 8; |
| 3362 |
| 3363 UErrorCode status = U_ZERO_ERROR; |
| 3364 |
| 3365 // create formatter |
| 3366 SimpleDateFormat *fmt1 = new SimpleDateFormat(UnicodeString("GGG yyyy-MM-dd'
T'HH:mm:ss'Z"), status); |
| 3367 failure(status, "new SimpleDateFormat", TRUE); |
| 3368 |
| 3369 for(int i=0; i < numData; i+=2) { |
| 3370 // create input string |
| 3371 UnicodeString in = data[i]; |
| 3372 |
| 3373 // parse string to date |
| 3374 UDate dt1 = fmt1->parse(in, status); |
| 3375 failure(status, "fmt->parse", TRUE); |
| 3376 |
| 3377 // format date back to string |
| 3378 UnicodeString out; |
| 3379 out = fmt1->format(dt1, out); |
| 3380 logln(out); |
| 3381 |
| 3382 // check that roundtrip worked as expected |
| 3383 UnicodeString expected = data[i+1]; |
| 3384 if (out != expected) { |
| 3385 dataerrln((UnicodeString)"FAIL: " + in + " -> " + out + " expected -
> " + expected); |
| 3386 } |
| 3387 } |
| 3388 |
| 3389 delete fmt1; |
| 3390 } |
| 3391 void DateFormatTest::TestFormalChineseDate() { |
| 3392 |
| 3393 UErrorCode status = U_ZERO_ERROR; |
| 3394 UnicodeString pattern ("y\\u5e74M\\u6708d\\u65e5", -1, US_INV ); |
| 3395 pattern = pattern.unescape(); |
| 3396 UnicodeString override ("y=hanidec;M=hans;d=hans", -1, US_INV ); |
| 3397 |
| 3398 // create formatter |
| 3399 SimpleDateFormat *sdf = new SimpleDateFormat(pattern,override,Locale::getChi
na(),status); |
| 3400 failure(status, "new SimpleDateFormat with override", TRUE); |
| 3401 |
| 3402 UDate thedate = date(2009-1900, UCAL_JULY, 28); |
| 3403 FieldPosition pos(0); |
| 3404 UnicodeString result; |
| 3405 sdf->format(thedate,result,pos); |
| 3406 |
| 3407 UnicodeString expected = "\\u4e8c\\u3007\\u3007\\u4e5d\\u5e74\\u4e03\\u6708\
\u4e8c\\u5341\\u516b\\u65e5"; |
| 3408 expected = expected.unescape(); |
| 3409 if (result != expected) { |
| 3410 dataerrln((UnicodeString)"FAIL: -> " + result + " expected -> " + expect
ed); |
| 3411 } |
| 3412 |
| 3413 UDate parsedate = sdf->parse(expected,status); |
| 3414 if ( parsedate != thedate ) { |
| 3415 UnicodeString pat1 ("yyyy-MM-dd'T'HH:mm:ss'Z'", -1, US_INV ); |
| 3416 SimpleDateFormat *usf = new SimpleDateFormat(pat1,Locale::getEnglish(),s
tatus); |
| 3417 UnicodeString parsedres,expres; |
| 3418 usf->format(parsedate,parsedres,pos); |
| 3419 usf->format(thedate,expres,pos); |
| 3420 errln((UnicodeString)"FAIL: parsed -> " + parsedres + " expected -> " +
expres); |
| 3421 delete usf; |
| 3422 } |
| 3423 delete sdf; |
| 3424 } |
| 3425 |
| 3426 #endif /* #if !UCONFIG_NO_FORMATTING */ |
| 3427 |
| 3428 //eof |
OLD | NEW |