1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/******************************************************************** 250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * COPYRIGHT: 38393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius * Copyright (c) 1997-2013, International Business Machines 450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Corporation and others. All Rights Reserved. 5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ********************************************************************/ 650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/utypes.h" 8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING 10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "dtfmttst.h" 1254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#include "unicode/localpointer.h" 13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/timezone.h" 14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/gregocal.h" 15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/smpdtfmt.h" 16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/datefmt.h" 1754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#include "unicode/dtptngen.h" 18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/simpletz.h" 19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/strenum.h" 20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/dtfmtsym.h" 21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "cmemory.h" 22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "cstring.h" 23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "caltest.h" // for fieldName 24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include <stdio.h> // for sprintf 25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 26103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#if U_PLATFORM_HAS_WIN32_API 27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "windttst.h" 28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define LENGTHOF(array) (int32_t)(sizeof(array)/sizeof((array)[0])) 3154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 32b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define ARRAY_SIZE(array) (sizeof array / sizeof array[0]) 33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#define ASSERT_OK(status) if(U_FAILURE(status)) {errcheckln(status, #status " = %s @ %s:%d", u_errorName(status), __FILE__, __LINE__); return; } 35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ***************************************************************************** 37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// class DateFormatTest 38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ***************************************************************************** 39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ ) 41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 4254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if(exec) { 4354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius logln("TestSuite DateFormatTest: "); 4454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 4554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO_BEGIN; 4654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestPatterns); 4754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestEquals); 4854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestTwoDigitYearDSTParse); 4954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestFieldPosition); 5054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestPartialParse994); 5154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestRunTogetherPattern985); 5254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestRunTogetherPattern917); 5354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestCzechMonths459); 5454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestLetterDPattern212); 5554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestDayOfYearPattern195); 5654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestQuotePattern161); 5754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestBadInput135); 5854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestBadInput135a); 5954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestTwoDigitYear); 6054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestDateFormatZone061); 6154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestDateFormatZone146); 6254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestLocaleDateFormat); 6354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestWallyWedel); 6454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestDateFormatCalendar); 6554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestSpaceParsing); 6654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestExactCountFormat); 6754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestWhiteSpaceParsing); 6854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestInvalidPattern); 6954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestGeneral); 7054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestGreekMay); 7154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestGenericTime); 7254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestGenericTimeZoneOrder); 7354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestHost); 7454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestEras); 7554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestNarrowNames); 768393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius TESTCASE_AUTO(TestShortDays); 7754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestStandAloneDays); 7854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestStandAloneMonths); 7954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestQuarters); 8054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestZTimeZoneParsing); 8154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestRelative); 8254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestRelativeClone); 8354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestHostClone); 8454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestTimeZoneDisplayName); 8554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestRoundtripWithCalendar); 8654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(Test6338); 8754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(Test6726); 8854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestGMTParsing); 8954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(Test6880); 9054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestISOEra); 9154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestFormalChineseDate); 9254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestNumberAsStringParsing); 9354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestStandAloneGMTParse); 9454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestParsePosition); 9554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestMonthPatterns); 9654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestContext); 9754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestNonGregoFmtParse); 9854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius /* 9954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestRelativeError); 10054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestRelativeOther); 10154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */ 10254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO(TestDotAndAtLeniency); 10354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius TESTCASE_AUTO_END; 10454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius} 10554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 10654dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusvoid DateFormatTest::TestPatterns() { 10754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius static const struct { 10854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius const char *actualPattern; 10954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius const char *expectedPattern; 11054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius const char *localeID; 11154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius const char *expectedLocalPattern; 11254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } EXPECTED[] = { 11354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_YEAR, "y","en","y"}, 11454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 11554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_QUARTER, "QQQQ", "en", "QQQQ"}, 11654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_ABBR_QUARTER, "QQQ", "en", "QQQ"}, 11754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_YEAR_QUARTER, "yQQQQ", "en", "QQQQ y"}, 11854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_YEAR_ABBR_QUARTER, "yQQQ", "en", "QQQ y"}, 11954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 12054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_NUM_MONTH, "M", "en", "L"}, 12154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_ABBR_MONTH, "MMM", "en", "LLL"}, 12254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_MONTH, "MMMM", "en", "LLLL"}, 12354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_YEAR_NUM_MONTH, "yM","en","M/y"}, 12454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_YEAR_ABBR_MONTH, "yMMM","en","MMM y"}, 12554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_YEAR_MONTH, "yMMMM","en","MMMM y"}, 12654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 12754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_DAY, "d","en","d"}, 12854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_YEAR_NUM_MONTH_DAY, "yMd", "en", "M/d/y"}, 12954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_YEAR_ABBR_MONTH_DAY, "yMMMd", "en", "MMM d, y"}, 13054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_YEAR_MONTH_DAY, "yMMMMd", "en", "MMMM d, y"}, 13154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_YEAR_NUM_MONTH_WEEKDAY_DAY, "yMEd", "en", "EEE, M/d/y"}, 13254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_YEAR_ABBR_MONTH_WEEKDAY_DAY, "yMMMEd", "en", "EEE, MMM d, y"}, 13354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_YEAR_MONTH_WEEKDAY_DAY, "yMMMMEEEEd", "en", "EEEE, MMMM d, y"}, 13454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 13554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_NUM_MONTH_DAY, "Md","en","M/d"}, 13654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_ABBR_MONTH_DAY, "MMMd","en","MMM d"}, 13754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_MONTH_DAY, "MMMMd","en","MMMM d"}, 13854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_NUM_MONTH_WEEKDAY_DAY, "MEd","en","EEE, M/d"}, 13954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_ABBR_MONTH_WEEKDAY_DAY, "MMMEd","en","EEE, MMM d"}, 14054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_MONTH_WEEKDAY_DAY, "MMMMEEEEd","en","EEEE, MMMM d"}, 14154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 14254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_HOUR, "j", "en", "h a"}, // (fixed expected result per ticket 6872<-6626) 14354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_HOUR24, "H", "en", "HH"}, // (fixed expected result per ticket 6872<-6626 14454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 14554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_MINUTE, "m", "en", "m"}, 14654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_HOUR_MINUTE, "jm","en","h:mm a"}, // (fixed expected result per ticket 6872<-7180) 14754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_HOUR24_MINUTE, "Hm", "en", "HH:mm"}, // (fixed expected result per ticket 6872<-6626) 14854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 14954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_SECOND, "s", "en", "s"}, 15054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_HOUR_MINUTE_SECOND, "jms","en","h:mm:ss a"}, // (fixed expected result per ticket 6872<-7180) 15154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_HOUR24_MINUTE_SECOND, "Hms","en","HH:mm:ss"}, // (fixed expected result per ticket 6872<-6626) 15254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_MINUTE_SECOND, "ms", "en", "mm:ss"}, // (fixed expected result per ticket 6872<-6626) 15354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 15454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_LOCATION_TZ, "VVVV", "en", "VVVV"}, 15554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_GENERIC_TZ, "vvvv", "en", "vvvv"}, 15654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_ABBR_GENERIC_TZ, "v", "en", "v"}, 15754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_SPECIFIC_TZ, "zzzz", "en", "zzzz"}, 15854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_ABBR_SPECIFIC_TZ, "z", "en", "z"}, 15954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_ABBR_UTC_TZ, "ZZZZ", "en", "ZZZZ"}, 16054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 16154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_YEAR_NUM_MONTH_DAY UDAT_ABBR_UTC_TZ, "yMdZZZZ", "en", "M/d/y, ZZZZ"}, 16254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {UDAT_MONTH_DAY UDAT_LOCATION_TZ, "MMMMdVVVV", "en", "MMMM d, VVVV"} 16354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius }; 16454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 16554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius IcuTestErrorCode errorCode(*this, "TestPatterns()"); 16654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius for (int32_t i = 0; i < LENGTHOF(EXPECTED); i++) { 16754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius // Verify that patterns have the correct values 16854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString actualPattern(EXPECTED[i].actualPattern, -1, US_INV); 16954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString expectedPattern(EXPECTED[i].expectedPattern, -1, US_INV); 17054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius Locale locale(EXPECTED[i].localeID); 17154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if (actualPattern != expectedPattern) { 17254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius errln("FAILURE! Expected pattern: " + expectedPattern + 17354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius " but was: " + actualPattern); 17454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 17554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 17654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius // Verify that DataFormat instances produced contain the correct 17754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius // localized patterns 17854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius // TODO: use DateFormat::getInstanceForSkeleton(), ticket #9029 17954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius // Java test code: 18054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius // DateFormat date1 = DateFormat.getPatternInstance(actualPattern, 18154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius // locale); 18254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius // DateFormat date2 = DateFormat.getPatternInstance(Calendar.getInstance(locale), 18354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius // actualPattern, locale); 18454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius LocalPointer<DateTimePatternGenerator> generator( 18554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius DateTimePatternGenerator::createInstance(locale, errorCode)); 18654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if(errorCode.logDataIfFailureAndReset("DateTimePatternGenerator::createInstance() failed for locale ID \"%s\"", EXPECTED[i].localeID)) { 18754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius continue; 18854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 18954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString pattern = generator->getBestPattern(actualPattern, errorCode); 19054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius SimpleDateFormat date1(pattern, locale, errorCode); 19154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius SimpleDateFormat date2(pattern, locale, errorCode); 19254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius date2.adoptCalendar(Calendar::createInstance(locale, errorCode)); 19354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if(errorCode.logIfFailureAndReset("DateFormat::getInstanceForSkeleton() failed")) { 19454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius errln(" for actualPattern \"%s\" & locale ID \"%s\"", 19554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius EXPECTED[i].actualPattern, EXPECTED[i].localeID); 19654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius continue; 19754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 19854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 19954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString expectedLocalPattern(EXPECTED[i].expectedLocalPattern, -1, US_INV); 20054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString actualLocalPattern1; 20154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString actualLocalPattern2; 20254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius date1.toLocalizedPattern(actualLocalPattern1, errorCode); 20354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius date2.toLocalizedPattern(actualLocalPattern2, errorCode); 20454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if (actualLocalPattern1 != expectedLocalPattern) { 20554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius errln("FAILURE! Expected local pattern: " + expectedLocalPattern 20654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius + " but was: " + actualLocalPattern1); 20754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 20854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if (actualLocalPattern2 != expectedLocalPattern) { 20954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius errln("FAILURE! Expected local pattern: " + expectedLocalPattern 21054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius + " but was: " + actualLocalPattern2); 21154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// Test written by Wally Wedel and emailed to me. 216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestWallyWedel() 217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 218b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 219b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 220b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Instantiate a TimeZone so we can get the ids. 221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 222b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone *tz = new SimpleTimeZone(7,""); 223b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Computational variables. 225b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 226b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t offset, hours, minutes, seconds; 227b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 228b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Instantiate a SimpleDateFormat set up to produce a full time 229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru zone name. 230b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 231b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat *sdf = new SimpleDateFormat((UnicodeString)"zzzz", status); 232b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 233b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A String array for the time zone ids. 234b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 235b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t ids_length; 236b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru StringEnumeration* ids = TimeZone::createEnumeration(); 237b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (ids == NULL) { 238b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho dataerrln("Unable to create TimeZone enumeration."); 239b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (sdf != NULL) { 240b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho delete sdf; 241b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 242b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho return; 243b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ids_length = ids->count(status); 245b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 246b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * How many ids do we have? 247b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 248b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("Time Zone IDs size: %d", ids_length); 249b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 250b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Column headings (sort of) 251b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 252b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("Ordinal ID offset(h:m) name"); 253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Loop through the tzs. 255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 256b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate today = Calendar::getNow(); 257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Calendar *cal = Calendar::createInstance(status); 258b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int32_t i = 0; i < ids_length; i++) { 259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // logln(i + " " + ids[i]); 260b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UnicodeString* id = ids->snext(status); 261b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone *ttz = TimeZone::createTimeZone(*id); 262b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // offset = ttz.getRawOffset(); 263b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru cal->setTimeZone(*ttz); 264b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru cal->setTime(today, status); 265b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru offset = cal->get(UCAL_ZONE_OFFSET, status) + cal->get(UCAL_DST_OFFSET, status); 266b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // logln(i + " " + ids[i] + " offset " + offset); 267b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* sign = "+"; 268b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (offset < 0) { 269b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru sign = "-"; 270b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru offset = -offset; 271b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 272b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru hours = offset/3600000; 273b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru minutes = (offset%3600000)/60000; 274b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru seconds = (offset%60000)/1000; 275b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString dstOffset = (UnicodeString)"" + sign + (hours < 10 ? "0" : "") + 276b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru (int32_t)hours + ":" + (minutes < 10 ? "0" : "") + (int32_t)minutes; 277b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (seconds != 0) { 278b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dstOffset = dstOffset + ":" + (seconds < 10 ? "0" : "") + seconds; 279b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 280b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 281b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Instantiate a date so we can display the time zone name. 282b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 283b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru sdf->setTimeZone(*ttz); 284b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 285b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Format the output. 286b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 287b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString fmtOffset; 288b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru FieldPosition pos(0); 289b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru sdf->format(today,fmtOffset, pos); 290b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // UnicodeString fmtOffset = tzS.toString(); 291b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString *fmtDstOffset = 0; 292b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (fmtOffset.startsWith("GMT") && fmtOffset.length() != 3) 293b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 294b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //fmtDstOffset = fmtOffset->substring(3); 295b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmtDstOffset = new UnicodeString(); 296b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmtOffset.extract(3, fmtOffset.length(), *fmtDstOffset); 297b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 298b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 299b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Show our result. 300b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 301b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBool ok = fmtDstOffset == 0 || *fmtDstOffset == dstOffset; 302b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (ok) 303b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 304b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(UnicodeString() + i + " " + *id + " " + dstOffset + 305b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru " " + fmtOffset + 306b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru (fmtDstOffset != 0 ? " ok" : " ?")); 307b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 308b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else 309b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 310b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln(UnicodeString() + i + " " + *id + " " + dstOffset + 311b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru " " + fmtOffset + " *** FAIL ***"); 312b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 313b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete ttz; 314b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmtDstOffset; 315b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 316b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete cal; 317b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // delete ids; // TODO: BAD API 318b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete ids; 319b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete sdf; 320b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete tz; 321b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 322b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 323b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 32450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 325b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 326b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test operator== 327b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 328b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 329b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestEquals() 330b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 331b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat* fmtA = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, DateFormat::FULL); 332b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat* fmtB = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, DateFormat::FULL); 333b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if ( fmtA == NULL || fmtB == NULL){ 334b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dataerrln("Error calling DateFormat::createDateTimeInstance"); 335b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmtA; 336b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmtB; 337b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 338b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 339b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 340b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(*fmtA == *fmtB)) errln((UnicodeString)"FAIL"); 341b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmtA; 342b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmtB; 343b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 344b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone* test = TimeZone::createTimeZone("PDT"); 345b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete test; 346b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 34750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 348b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 349b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 350b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 351b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the parsing of 2-digit years. 352b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 353b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 354b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestTwoDigitYearDSTParse(void) 355b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 356b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 357b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat* fullFmt = new SimpleDateFormat((UnicodeString)"EEE MMM dd HH:mm:ss.SSS zzz yyyy G", status); 358b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat *fmt = new SimpleDateFormat((UnicodeString)"dd-MMM-yy h:mm:ss 'o''clock' a z", Locale::getEnglish(), status); 359b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //DateFormat* fmt = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, DateFormat::FULL, Locale::ENGLISH); 360b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString* s = new UnicodeString("03-Apr-04 2:20:47 o'clock AM PST", ""); 361b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone* defaultTZ = TimeZone::createDefault(); 362b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone* PST = TimeZone::createTimeZone("PST"); 363b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t defaultOffset = defaultTZ->getRawOffset(); 364b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t PSTOffset = PST->getRawOffset(); 365b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t hour = 2 + (defaultOffset - PSTOffset) / (60*60*1000); 366b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // hour is the expected hour of day, in units of seconds 367b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru hour = ((hour < 0) ? hour + 24 : hour) * 60*60; 36850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 369b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString str; 370b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 371b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(U_FAILURE(status)) { 37250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Could not set up test. exitting - %s", u_errorName(status)); 373b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 374b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 375b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 376b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d = fmt->parse(*s, status); 377b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(*s + " P> " + ((DateFormat*)fullFmt)->format(d, str)); 378b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t y, m, day, hr, min, sec; 379b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateToFields(d, y, m, day, hr, min, sec); 380b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru hour += defaultTZ->inDaylightTime(d, status) ? 1 : 0; 381b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru hr = hr*60*60; 382b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (hr != hour) 383b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Should parse to hour " + hour + " but got " + hr); 384b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 385b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 386b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: " + (int32_t)status); 387b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 388b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete s; 389b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmt; 390b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fullFmt; 391b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete PST; 392b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete defaultTZ; 393b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 39450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 395b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 39650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 397b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruUChar toHexString(int32_t i) { return (UChar)(i + (i < 10 ? 0x30 : (0x41 - 10))); } 398b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 399b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruUnicodeString& 400b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::escape(UnicodeString& s) 401b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 402b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString buf; 403b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int32_t i=0; i<s.length(); ++i) 404b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 405b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UChar c = s[(int32_t)i]; 406b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (c <= (UChar)0x7F) buf += c; 407b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else { 408b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf += (UChar)0x5c; buf += (UChar)0x55; 409b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf += toHexString((c & 0xF000) >> 12); 410b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf += toHexString((c & 0x0F00) >> 8); 411b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf += toHexString((c & 0x00F0) >> 4); 412b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf += toHexString(c & 0x000F); 413b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 414b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 415b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return (s = buf); 416b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 41750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 418b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 419b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 420b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 421b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This MUST be kept in sync with DateFormatSymbols.gPatternChars. 422b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 4238393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Corneliusstatic const char* PATTERN_CHARS = "GyMdkHmsSEDFwWahKzYeugAZvcLQqVUOXx"; 424b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 425b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 426b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A list of the names of all the fields in DateFormat. 427b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This MUST be kept in sync with DateFormat. 428b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 429b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char* DATEFORMAT_FIELD_NAMES[] = { 430b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ERA_FIELD", 431b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "YEAR_FIELD", 432b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MONTH_FIELD", 433b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "DATE_FIELD", 434b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "HOUR_OF_DAY1_FIELD", 435b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "HOUR_OF_DAY0_FIELD", 436b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MINUTE_FIELD", 437b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "SECOND_FIELD", 438b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MILLISECOND_FIELD", 439b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "DAY_OF_WEEK_FIELD", 440b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "DAY_OF_YEAR_FIELD", 441b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "DAY_OF_WEEK_IN_MONTH_FIELD", 442b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "WEEK_OF_YEAR_FIELD", 443b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "WEEK_OF_MONTH_FIELD", 444b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "AM_PM_FIELD", 445b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "HOUR1_FIELD", 446b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "HOUR0_FIELD", 447b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "TIMEZONE_FIELD", 448b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "YEAR_WOY_FIELD", 449b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "DOW_LOCAL_FIELD", 450b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EXTENDED_YEAR_FIELD", 451b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "JULIAN_DAY_FIELD", 452b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MILLISECONDS_IN_DAY_FIELD", 453b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "TIMEZONE_RFC_FIELD", 454b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "GENERIC_TIMEZONE_FIELD", 455b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "STAND_ALONE_DAY_FIELD", 456b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "STAND_ALONE_MONTH_FIELD", 457b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "QUARTER_FIELD", 458b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "STAND_ALONE_QUARTER_FIELD", 459103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius "TIMEZONE_SPECIAL_FIELD", 4608393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "YEAR_NAME_FIELD", 4618393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "TIMEZONE_LOCALIZED_GMT_OFFSET_FIELD", 4628393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "TIMEZONE_ISO_FIELD", 4638393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "TIMEZONE_ISO_LOCAL_FIELD", 464b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 465b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 466b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const int32_t DATEFORMAT_FIELD_NAMES_LENGTH = 467b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru sizeof(DATEFORMAT_FIELD_NAMES) / sizeof(DATEFORMAT_FIELD_NAMES[0]); 468b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 469b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 470b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify that returned field position indices are correct. 471b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 472b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestFieldPosition() { 473b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 474b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t i, j, exp; 475b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString buf; 476b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 477b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Verify data 478b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormatSymbols rootSyms(Locale(""), ec); 47985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (U_FAILURE(ec)) { 480103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius dataerrln("Unable to create DateFormatSymbols - %s", u_errorName(ec)); 48185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho return; 48285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 483b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 484b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // local pattern chars data is not longer loaded 485b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // from icu locale bundle 486b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals("patternChars", PATTERN_CHARS, rootSyms.getLocalPatternChars(buf)); 487b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals("patternChars", PATTERN_CHARS, DateFormatSymbols::getPatternUChars()); 488b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertTrue("DATEFORMAT_FIELD_NAMES", DATEFORMAT_FIELD_NAMES_LENGTH == UDAT_FIELD_COUNT); 489b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertTrue("Data", UDAT_FIELD_COUNT == uprv_strlen(PATTERN_CHARS)); 490b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 491b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Create test formatters 492b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t COUNT = 4; 493b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat* dateFormats[COUNT]; 494b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateFormats[0] = DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale::getUS()); 495b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateFormats[1] = DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale::getFrance()); 496b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Make the pattern "G y M d..." 497b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf.remove().append(PATTERN_CHARS); 498b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (j=buf.length()-1; j>=0; --j) buf.insert(j, (UChar)32/*' '*/); 499b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateFormats[2] = new SimpleDateFormat(buf, Locale::getUS(), ec); 500b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Make the pattern "GGGG yyyy MMMM dddd..." 501b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (j=buf.length()-1; j>=0; j-=2) { 502b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (i=0; i<3; ++i) { 503b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf.insert(j, buf.charAt(j)); 504b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 505b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 506b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateFormats[3] = new SimpleDateFormat(buf, Locale::getUS(), ec); 507b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(U_FAILURE(ec)){ 508b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln(UnicodeString("Could not create SimpleDateFormat object for locale en_US. Error: " )+ UnicodeString(u_errorName(ec))); 509b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 510b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 511b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate aug13 = 871508052513.0; 512b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 513b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Expected output field values for above DateFormats on aug13 514b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Fields are given in order of DateFormat field number 515b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* EXPECTED[] = { 5168393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "", "1997", "August", "13", "", "", "34", "12", "", "Wednesday", 5178393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "", "", "", "", "PM", "2", "", "Pacific Daylight Time", "", "", 5188393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "", "", "", "", "", "", "", "", "", "", 5198393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "", "", "", "", 5208393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 5218393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "", "1997", "ao\\u00FBt", "13", "", "14", "34", "12", "", "mercredi", 5228393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "", "", "", "", "", "", "", "heure avanc\\u00e9e du Pacifique", "", "", 5238393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "", "", "", "", "", "", "", "", "", "", 5248393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "", "", "", "", 5258393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 5268393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "AD", "1997", "8", "13", "14", "14", "34", "12", "5", "Wed", 5278393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "225", "2", "33", "3", "PM", "2", "2", "PDT", "1997", "4", 5288393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "1997", "2450674", "52452513", "-0700", "PT", "4", "8", "3", "3", "uslax", 5298393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "1997", "GMT-7", "-07", "-07", 5308393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 5318393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "Anno Domini", "1997", "August", "0013", "0014", "0014", "0034", "0012", "5130", "Wednesday", 5328393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "0225", "0002", "0033", "0003", "PM", "0002", "0002", "Pacific Daylight Time", "1997", "Wednesday", 5338393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "1997", "2450674", "52452513", "GMT-07:00", "Pacific Time", "Wednesday", "August", "3rd quarter", "3rd quarter", "Los Angeles Time", 5348393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "1997", "GMT-07:00", "-0700", "-0700", 535b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 536b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 537b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t EXPECTED_LENGTH = sizeof(EXPECTED)/sizeof(EXPECTED[0]); 538b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 539b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertTrue("data size", EXPECTED_LENGTH == COUNT * UDAT_FIELD_COUNT); 540b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 541b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone* PT = TimeZone::createTimeZone("America/Los_Angeles"); 542b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (j = 0, exp = 0; j < COUNT; ++j) { 543b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // String str; 544b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat* df = dateFormats[j]; 545b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru df->setTimeZone(*PT); 54627f654740f2a26ad62a5c155af9199af9e69b889claireho SimpleDateFormat* sdtfmt = dynamic_cast<SimpleDateFormat*>(df); 54727f654740f2a26ad62a5c155af9199af9e69b889claireho if (sdtfmt != NULL) { 54827f654740f2a26ad62a5c155af9199af9e69b889claireho logln(" Pattern = " + sdtfmt->toPattern(buf.remove())); 549b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 550b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(" Pattern = ? (not a SimpleDateFormat)"); 551b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 552b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" Result = " + df->format(aug13, buf.remove())); 553b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 55450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t expBase = exp; // save for later 555b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (i = 0; i < UDAT_FIELD_COUNT; ++i, ++exp) { 556b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru FieldPosition pos(i); 557b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf.remove(); 55850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho df->format(aug13, buf, pos); 559b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString field; 560b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf.extractBetween(pos.getBeginIndex(), pos.getEndIndex(), field); 561b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"field #" + i + " " + DATEFORMAT_FIELD_NAMES[i], 562b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ctou(EXPECTED[exp]), field); 563b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 56450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 56550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // test FieldPositionIterator API 56650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho logln("FieldPositionIterator"); 56750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { 56850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode status = U_ZERO_ERROR; 56950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho FieldPositionIterator posIter; 57050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho FieldPosition fp; 57150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 57250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho buf.remove(); 57350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho df->format(aug13, buf, &posIter, status); 57450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho while (posIter.next(fp)) { 57550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t i = fp.getField(); 57650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString field; 57750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho buf.extractBetween(fp.getBeginIndex(), fp.getEndIndex(), field); 57850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho assertEquals((UnicodeString)"field #" + i + " " + DATEFORMAT_FIELD_NAMES[i], 57950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ctou(EXPECTED[expBase + i]), field); 58050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 58150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 58250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 583b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 584b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 58550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 58650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // test null posIter 58750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho buf.remove(); 58850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode status = U_ZERO_ERROR; 58950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dateFormats[0]->format(aug13, buf, NULL, status); 59050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // if we didn't crash, we succeeded. 59150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 592b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (i=0; i<COUNT; ++i) { 593b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dateFormats[i]; 594b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 595b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete PT; 596b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 597b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 598b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 599b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 600b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 601b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * General parse/format tests. Add test cases as needed. 602b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 603b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestGeneral() { 604b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* DATA[] = { 605b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss.SSS", 606b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 607b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Milliseconds are left-justified, since they format as fractions of a second 60827f654740f2a26ad62a5c155af9199af9e69b889claireho "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", 60927f654740f2a26ad62a5c155af9199af9e69b889claireho "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", 610b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm:ss.SSS", "F", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31.567", 6118393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "y/M/d H:mm:ss.SSSS", "pf", "2004/3/10 16:36:31.5679", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31.5670", 612b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 613b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(DATA, ARRAY_SIZE(DATA), Locale("en", "", "")); 614b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 61550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 616b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 617b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 618b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 619b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify that strings which contain incomplete specifications are parsed 620b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * correctly. In some instances, this means not being parsed at all, and 621b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * returning an appropriate error. 622b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 623b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 624b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestPartialParse994() 625b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 626b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 627b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat* f = new SimpleDateFormat(status); 62885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (U_FAILURE(status)) { 62950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail new SimpleDateFormat: %s", u_errorName(status)); 63085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete f; 63185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho return; 63285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 633b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate null = 0; 634b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 10:11:42", date(97, 1 - 1, 17, 10, 11, 42)); 635b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 10:", null); 636b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 10", null); 637b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 ", null); 638b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17", null); 639b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 640b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete f; 641b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 64250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 643b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 64450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 645b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 646b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::tryPat994(SimpleDateFormat* format, const char* pat, const char* str, UDate expected) 647b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 648b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 649b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate null = 0; 650b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(UnicodeString("Pattern \"") + pat + "\" String \"" + str + "\""); 651b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 652b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru format->applyPattern(pat); 653b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date = format->parse(str, status); 654b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status) || date == null) 655b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 656b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"ParseException: " + (int32_t)status); 657b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (expected != null) errln((UnicodeString)"FAIL: Expected " + dateToString(expected)); 658b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 659b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else 660b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 661b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString f; 662b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ((DateFormat*)format)->format(date, f); 663b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(UnicodeString(" parse(") + str + ") -> " + dateToString(date)); 664b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" format -> " + f); 665b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (expected == null || 666b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru !(date == expected)) errln((UnicodeString)"FAIL: Expected null");//" + expected); 667b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(f == str)) errln(UnicodeString("FAIL: Expected ") + str); 668b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 669b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 670b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(ParseException e) { 671b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // logln((UnicodeString)"ParseException: " + e.getMessage()); 672b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // if (expected != null) errln((UnicodeString)"FAIL: Expected " + dateToString(expected)); 673b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 674b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(Exception e) { 675b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // errln((UnicodeString)"*** Exception:"); 676b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // e.printStackTrace(); 677b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 678b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 67950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 680b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 68150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 682b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 683b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify the behavior of patterns in which digits for different fields run together 684b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * without intervening separators. 685b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 686b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 687b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestRunTogetherPattern985() 688b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 689b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 690b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString format("yyyyMMddHHmmssSSS"); 691b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString now, then; 692b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //UBool flag; 693b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat *formatter = new SimpleDateFormat(format, status); 69450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(status)) { 69550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail new SimpleDateFormat: %s", u_errorName(status)); 69650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete formatter; 69750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 69850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 699b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date1 = Calendar::getNow(); 700b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ((DateFormat*)formatter)->format(date1, now); 701b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(now); 702b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition pos(0); 703b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date2 = formatter->parse(now, pos); 7048393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius if (date2 == 0) then = UnicodeString("Parse stopped at ") + pos.getIndex(); 705b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else ((DateFormat*)formatter)->format(date2, then); 706b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(then); 707b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(date2 == date1)) errln((UnicodeString)"FAIL"); 708b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete formatter; 709b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 710b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 71150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 712b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 71350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 714b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 715b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify the behavior of patterns in which digits for different fields run together 716b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * without intervening separators. 717b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 718b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 719b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestRunTogetherPattern917() 720b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 721b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 722b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat* fmt; 723b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString myDate; 724b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt = new SimpleDateFormat((UnicodeString)"yyyy/MM/dd", status); 72550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(status)) { 72650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail new SimpleDateFormat: %s", u_errorName(status)); 72750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete fmt; 72850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 72950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 730b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru myDate = "1997/02/03"; 731b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru testIt917(fmt, myDate, date(97, 2 - 1, 3)); 732b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmt; 733b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt = new SimpleDateFormat((UnicodeString)"yyyyMMdd", status); 734b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru myDate = "19970304"; 735b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru testIt917(fmt, myDate, date(97, 3 - 1, 4)); 736b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmt; 737b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 738b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 73950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 740b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 74150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 742b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 743b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::testIt917(SimpleDateFormat* fmt, UnicodeString& str, UDate expected) 744b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 745b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 746b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString pattern; 747b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"pattern=" + fmt->toPattern(pattern) + " string=" + str); 748b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Formattable o; 749b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 750b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ((Format*)fmt)->parseObject(str, o, status); 751b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 752b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) return; 753b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(ParseException e) { 754b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // e.printStackTrace(); 755b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // return; 756b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 757b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Parsed object: " + dateToString(o.getDate())); 758b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(o.getDate() == expected)) errln((UnicodeString)"FAIL: Expected " + dateToString(expected)); 759b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString formatted; ((Format*)fmt)->format(o, formatted, status); 760b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Formatted string: " + formatted); 761b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(formatted == str)) errln((UnicodeString)"FAIL: Expected " + str); 762b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 763b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 76450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 765b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 76650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 767b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 768b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify the handling of Czech June and July, which have the unique attribute that 769b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * one is a proper prefix substring of the other. 770b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 771b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 772b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestCzechMonths459() 773b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 774b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 775b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat* fmt = DateFormat::createDateInstance(DateFormat::FULL, Locale("cs", "", "")); 776b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fmt == NULL){ 777b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dataerrln("Error calling DateFormat::createDateInstance()"); 778b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 779b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 780b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 781b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString pattern; 782b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Pattern " + ((SimpleDateFormat*) fmt)->toPattern(pattern)); 783b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate june = date(97, UCAL_JUNE, 15); 784b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate july = date(97, UCAL_JULY, 15); 785b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString juneStr; fmt->format(june, juneStr); 786b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString julyStr; fmt->format(july, julyStr); 787b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 788b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"format(June 15 1997) = " + juneStr); 789b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d = fmt->parse(juneStr, status); 790b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString s; fmt->format(d, s); 791b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t month,yr,day,hr,min,sec; dateToFields(d,yr,month,day,hr,min,sec); 792b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" -> parse -> " + s + " (month = " + month + ")"); 793b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (month != UCAL_JUNE) errln((UnicodeString)"FAIL: Month should be June"); 794b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"format(July 15 1997) = " + julyStr); 795b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru d = fmt->parse(julyStr, status); 796b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt->format(d, s); 797b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateToFields(d,yr,month,day,hr,min,sec); 798b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" -> parse -> " + s + " (month = " + month + ")"); 799b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (month != UCAL_JULY) errln((UnicodeString)"FAIL: Month should be July"); 800b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 801b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(ParseException e) { 802b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 803b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"Exception: " + (int32_t)status); 804b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 805b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmt; 806b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 80750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 808b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 809b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 810b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 811b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the handling of 'D' in patterns. 812b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 813b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 814b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestLetterDPattern212() 815b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 816b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 817b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString dateString("1995-040.05:01:29"); 818b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString bigD("yyyy-DDD.hh:mm:ss"); 819b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString littleD("yyyy-ddd.hh:mm:ss"); 820b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate expLittleD = date(95, 0, 1, 5, 1, 29); 821b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate expBigD = expLittleD + 39 * 24 * 3600000.0; 822b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expLittleD = expBigD; // Expect the same, with default lenient parsing 823b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"dateString= " + dateString); 824b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat *formatter = new SimpleDateFormat(bigD, status); 82550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(status)) { 82650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail new SimpleDateFormat: %s", u_errorName(status)); 82750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete formatter; 82850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 82950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 830b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition pos(0); 831b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate myDate = formatter->parse(dateString, pos); 832b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Using " + bigD + " -> " + myDate); 833b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (myDate != expBigD) errln((UnicodeString)"FAIL: bigD - Expected " + dateToString(expBigD)); 834b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete formatter; 835b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru formatter = new SimpleDateFormat(littleD, status); 83650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ASSERT_OK(status); 837b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru pos = ParsePosition(0); 838b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru myDate = formatter->parse(dateString, pos); 839b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Using " + littleD + " -> " + dateToString(myDate)); 840b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (myDate != expLittleD) errln((UnicodeString)"FAIL: littleD - Expected " + dateToString(expLittleD)); 841b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete formatter; 842b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 843b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 84450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 845b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 846b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 847b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 848b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the day of year pattern. 849b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 850b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 851b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestDayOfYearPattern195() 852b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 853b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 854b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate today = Calendar::getNow(); 855b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t year,month,day,hour,min,sec; dateToFields(today,year,month,day,hour,min,sec); 856b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate expected = date(year, month, day); 857b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Test Date: " + dateToString(today)); 858b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat* sdf = (SimpleDateFormat*)DateFormat::createDateInstance(); 859b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (sdf == NULL){ 860b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dataerrln("Error calling DateFormat::createDateInstance()"); 861b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 862b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 863b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPattern(*sdf, today, 0, expected); 864b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPattern(*sdf, today, "G yyyy DDD", expected); 865b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete sdf; 866b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 867b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 86850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 869b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 87050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 871b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 872b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::tryPattern(SimpleDateFormat& sdf, UDate d, const char* pattern, UDate expected) 873b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 874b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 875b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (pattern != 0) sdf.applyPattern(pattern); 876b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString thePat; 877b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"pattern: " + sdf.toPattern(thePat)); 878b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString formatResult; (*(DateFormat*)&sdf).format(d, formatResult); 879b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" format -> " + formatResult); 880b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // try { 881b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d2 = sdf.parse(formatResult, status); 882b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" parse(" + formatResult + ") -> " + dateToString(d2)); 883b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (d2 != expected) errln((UnicodeString)"FAIL: Expected " + dateToString(expected)); 884b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString format2; (*(DateFormat*)&sdf).format(d2, format2); 885b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" format -> " + format2); 886b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(formatResult == format2)) errln((UnicodeString)"FAIL: Round trip drift"); 887b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 888b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(Exception e) { 889b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 890b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"Error: " + (int32_t)status); 891b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 892b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 89350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 894b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 895b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 896b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 897b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the handling of single quotes in patterns. 898b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 899b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 900b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestQuotePattern161() 901b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 902b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 903b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat* formatter = new SimpleDateFormat((UnicodeString)"MM/dd/yyyy 'at' hh:mm:ss a zzz", status); 90450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(status)) { 90550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail new SimpleDateFormat: %s", u_errorName(status)); 90650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete formatter; 90750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 90850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 909b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate currentTime_1 = date(97, UCAL_AUGUST, 13, 10, 42, 28); 910b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString dateString; ((DateFormat*)formatter)->format(currentTime_1, dateString); 911b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString exp("08/13/1997 at 10:42:28 AM "); 912b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"format(" + dateToString(currentTime_1) + ") = " + dateString); 913b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (0 != dateString.compareBetween(0, exp.length(), exp, 0, exp.length())) errln((UnicodeString)"FAIL: Expected " + exp); 914b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete formatter; 915b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 916b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 91750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 918b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 919b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 920b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 921b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify the correct behavior when handling invalid input strings. 922b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 923b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 924b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestBadInput135() 925b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 926b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 927b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat::EStyle looks[] = { 928b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat::SHORT, DateFormat::MEDIUM, DateFormat::LONG, DateFormat::FULL 929b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 930b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t looks_length = (int32_t)(sizeof(looks) / sizeof(looks[0])); 931b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* strings[] = { 932b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "Mar 15", "Mar 15 1997", "asdf", "3/1/97 1:23:", "3/1/00 1:23:45 AM" 933b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 934b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t strings_length = (int32_t)(sizeof(strings) / sizeof(strings[0])); 935b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *full = DateFormat::createDateTimeInstance(DateFormat::LONG, DateFormat::LONG); 936b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(full==NULL) { 93785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("could not create date time instance"); 938b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 939b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 94054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString expected("March 1, 2000 at 1:23:45 AM "); 941b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int32_t i = 0; i < strings_length;++i) { 942b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* text = strings[i]; 943b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int32_t j = 0; j < looks_length;++j) { 944b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat::EStyle dateLook = looks[j]; 945b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int32_t k = 0; k < looks_length;++k) { 946b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat::EStyle timeLook = looks[k]; 947b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *df = DateFormat::createDateTimeInstance(dateLook, timeLook); 948b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (df == NULL){ 949b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dataerrln("Error calling DateFormat::createDateTimeInstance()"); 950b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru continue; 951b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 952b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString prefix = UnicodeString(text) + ", " + dateLook + "/" + timeLook + ": "; 953b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 954b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate when = df->parse(text, status); 955b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (when == 0 && U_SUCCESS(status)) { 956b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln(prefix + "SHOULD NOT HAPPEN: parse returned 0."); 957b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru continue; 958b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 959b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_SUCCESS(status)) 960b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 961b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString format; 962b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UnicodeString pattern; 963b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho SimpleDateFormat* sdtfmt = dynamic_cast<SimpleDateFormat*>(df); 964b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (sdtfmt != NULL) { 965b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho sdtfmt->toPattern(pattern); 966b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 967b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full->format(when, format); 968b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(prefix + "OK: " + format); 969b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (0!=format.compareBetween(0, expected.length(), expected, 0, expected.length())) 970b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho errln((UnicodeString)"FAIL: Parse \"" + text + "\", pattern \"" + pattern + "\", expected " + expected + " got " + format); 971b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 972b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 973b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(ParseException e) { 974b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else 975b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 976b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 977b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(StringIndexOutOfBoundsException e) { 978b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // errln(prefix + "SHOULD NOT HAPPEN: " + (int)status); 979b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 980b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete df; 981b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 982b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 983b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 984b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete full; 985b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 986b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 987b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 98850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 989b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char* const parseFormats[] = { 990b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM d, yyyy", 991b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM d yyyy", 992b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "M/d/yy", 993b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "d MMMM, yyyy", 994b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "d MMMM yyyy", 995b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "d MMMM", 996b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM d", 997b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy", 998b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "h:mm a MMMM d, yyyy" 999b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 100050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1001b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho#if 0 1002b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho// strict inputStrings 1003b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char* const inputStrings[] = { 1004b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "bogus string", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1005b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "April 1, 1997", "April 1, 1997", 0, 0, 0, 0, 0, "April 1", 0, 0, 1006b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "Jan 1, 1970", "January 1, 1970", 0, 0, 0, 0, 0, "January 1", 0, 0, 1007b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "Jan 1 2037", 0, "January 1 2037", 0, 0, 0, 0, "January 1", 0, 0, 1008b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "1/1/70", 0, 0, "1/1/70", 0, 0, 0, 0, "0001", 0, 1009b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "5 May 1997", 0, 0, 0, 0, "5 May 1997", "5 May", 0, "0005", 0, 1010b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "16 May", 0, 0, 0, 0, 0, "16 May", 0, "0016", 0, 1011b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "April 30", 0, 0, 0, 0, 0, 0, "April 30", 0, 0, 1012b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "1998", 0, 0, 0, 0, 0, 0, 0, "1998", 0, 1013b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "1", 0, 0, 0, 0, 0, 0, 0, "0001", 0, 1014b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "3:00 pm Jan 1, 1997", 0, 0, 0, 0, 0, 0, 0, "0003", "3:00 PM January 1, 1997", 1015b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 1016b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho#else 1017b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho// lenient inputStrings 1018b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2clairehostatic const char* const inputStrings[] = { 1019b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "bogus string", 0, 0, 0, 0, 0, 0, 0, 0, 0, 1020b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "April 1, 1997", "April 1, 1997", "April 1 1997", "4/1/97", 0, 0, 0, "April 1", 0, 0, 1021b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "Jan 1, 1970", "January 1, 1970", "January 1 1970", "1/1/70", 0, 0, 0, "January 1", 0, 0, 1022b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "Jan 1 2037", "January 1, 2037", "January 1 2037", "1/1/37", 0, 0, 0, "January 1", 0, 0, 10238393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "1/1/70", "January 1, 0070", "January 1 0070", "1/1/70", "1 January, 0070", "1 January 0070", "1 January", "January 1", "0001", 0, 1024b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "5 May 1997", 0, 0, 0, "5 May, 1997", "5 May 1997", "5 May", 0, "0005", 0, 10258393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "16 May", 0, 0, 0, 0, 0, "16 May", 0, "0016", 0, 1026b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "April 30", 0, 0, 0, 0, 0, 0, "April 30", 0, 0, 1027b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "1998", 0, 0, 0, 0, 0, 0, 0, "1998", 0, 1028b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "1", 0, 0, 0, 0, 0, 0, 0, "0001", 0, 1029b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "3:00 pm Jan 1, 1997", 0, 0, 0, 0, 0, 0, 0, "0003", "3:00 PM January 1, 1997", 1030b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho}; 1031b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho#endif 1032b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1033b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 1034b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1035b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1036b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify the correct behavior when parsing an array of inputs against an 1037b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * array of patterns, with known results. The results are encoded after 1038b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the input strings in each row. 1039b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1040b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 1041b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestBadInput135a() 1042b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1043b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 1044b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat* dateParse = new SimpleDateFormat(status); 1045b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(U_FAILURE(status)) { 104650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Failed creating SimpleDateFormat with %s. Quitting test", u_errorName(status)); 1047b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dateParse; 1048b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1049b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1050b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* s; 1051b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date; 1052b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const uint32_t PF_LENGTH = (int32_t)(sizeof(parseFormats)/sizeof(parseFormats[0])); 1053b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const uint32_t INPUT_LENGTH = (int32_t)(sizeof(inputStrings)/sizeof(inputStrings[0])); 1054b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1055b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateParse->applyPattern("d MMMM, yyyy"); 1056b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateParse->adoptTimeZone(TimeZone::createDefault()); 1057b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru s = "not parseable"; 1058b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString thePat; 1059b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(UnicodeString("Trying to parse \"") + s + "\" with " + dateParse->toPattern(thePat)); 1060b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 1061b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru date = dateParse->parse(s, status); 1062b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_SUCCESS(status)) 1063b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Expected exception during parse"); 1064b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 1065b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(Exception ex) { 1066b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else 1067b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Exception during parse: " + (int32_t)status); 1068b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 1069b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 1070b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (uint32_t i = 0; i < INPUT_LENGTH; i += (PF_LENGTH + 1)) { 1071b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition parsePosition(0); 1072b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString s( inputStrings[i]); 1073b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (uint32_t index = 0; index < PF_LENGTH;++index) { 1074b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* expected = inputStrings[i + 1 + index]; 1075b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateParse->applyPattern(parseFormats[index]); 1076b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateParse->adoptTimeZone(TimeZone::createDefault()); 1077b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 1078b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru parsePosition.setIndex(0); 1079b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru date = dateParse->parse(s, parsePosition); 1080b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (parsePosition.getIndex() != 0) { 1081b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString s1, s2; 1082b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru s.extract(0, parsePosition.getIndex(), s1); 1083b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru s.extract(parsePosition.getIndex(), s.length(), s2); 1084b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (date == 0) { 1085b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"ERROR: null result fmt=\"" + 1086b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru parseFormats[index] + 1087b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "\" pos=" + parsePosition.getIndex() + " " + 1088b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru s1 + "|" + s2); 1089b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1090b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else { 1091b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result; 1092b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ((DateFormat*)dateParse)->format(date, result); 1093b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Parsed \"" + s + "\" using \"" + dateParse->toPattern(thePat) + "\" to: " + result); 1094b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (expected == 0) 1095b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho errln((UnicodeString)"FAIL: Expected parse failure, got " + result); 1096b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else if (!(result == expected)) 1097b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho errln(UnicodeString("FAIL: Parse \"") + s + UnicodeString("\", expected ") + expected + UnicodeString(", got ") + result); 1098b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1099b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else if (expected != 0) { 1101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln(UnicodeString("FAIL: Expected ") + expected + " from \"" + 1102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru s + "\" with \"" + dateParse->toPattern(thePat) + "\""); 1103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 1105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(Exception ex) { 1106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 1107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"An exception was thrown during parse: " + (int32_t)status); 1108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 1109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dateParse; 1112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 1113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 1114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 111550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 1117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the parsing of two-digit years. 1120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 1122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestTwoDigitYear() 1123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 1125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat fmt("dd/MM/yy", Locale::getUK(), ec); 1126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(ec)) { 112750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("FAIL: SimpleDateFormat constructor - %s", u_errorName(ec)); 1128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru parse2DigitYear(fmt, "5/6/17", date(117, UCAL_JUNE, 5)); 1131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru parse2DigitYear(fmt, "4/6/34", date(34, UCAL_JUNE, 4)); 1132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 113350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 113550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 1137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::parse2DigitYear(DateFormat& fmt, const char* str, UDate expected) 1138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 1140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 1141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d = fmt.parse(str, status); 1142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString thePat; 1143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(UnicodeString("Parsing \"") + str + "\" with " + ((SimpleDateFormat*)&fmt)->toPattern(thePat) + 1144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru " => " + dateToString(d)); 1145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (d != expected) errln((UnicodeString)"FAIL: Expected " + expected); 1146b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 1147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(ParseException e) { 1148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 1149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Got exception"); 1150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 1151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 115250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 1154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the formatting of time zones. 1157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 1159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestDateFormatZone061() 1160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 1162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date; 1163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *formatter; 1164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru date= 859248000000.0; 1165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Date 1997/3/25 00:00 GMT: " + date); 1166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru formatter = new SimpleDateFormat((UnicodeString)"dd-MMM-yyyyy HH:mm", Locale::getUK(), status); 1167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(U_FAILURE(status)) { 116850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Failed creating SimpleDateFormat with %s. Quitting test", u_errorName(status)); 1169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete formatter; 1170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru formatter->adoptTimeZone(TimeZone::createTimeZone("GMT")); 1173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString temp; formatter->format(date, temp); 1174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Formatted in GMT to: " + temp); 1175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 1176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate tempDate = formatter->parse(temp, status); 1177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Parsed to: " + dateToString(tempDate)); 1178b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (tempDate != date) errln((UnicodeString)"FAIL: Expected " + dateToString(date)); 1179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 1180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(Throwable t) { 1181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 1182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"Date Formatter throws: " + (int32_t)status); 1183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 1184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete formatter; 1185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 118650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1187b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 118850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1189b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the formatting of time zones. 1191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1192b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 1193b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestDateFormatZone146() 1194b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1195b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone *saveDefault = TimeZone::createDefault(); 1196b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1197b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 1198b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone *thedefault = TimeZone::createTimeZone("GMT"); 1199b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone::setDefault(*thedefault); 1200b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // java.util.Locale.setDefault(new java.util.Locale("ar", "", "")); 1201b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1202b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // check to be sure... its GMT all right 1203b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone *testdefault = TimeZone::createDefault(); 1204b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString testtimezone; 1205b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru testdefault->getID(testtimezone); 1206b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (testtimezone == "GMT") 1207b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("Test timezone = " + testtimezone); 1208b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else 1209b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho dataerrln("Test timezone should be GMT, not " + testtimezone); 1210b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 1212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // now try to use the default GMT time zone 1213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru GregorianCalendar *greenwichcalendar = 1214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru new GregorianCalendar(1997, 3, 4, 23, 0, status); 121550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(status)) { 121650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail new GregorianCalendar: %s", u_errorName(status)); 121750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } else { 121850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho //*****************************greenwichcalendar.setTimeZone(TimeZone.getDefault()); 121950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho //greenwichcalendar.set(1997, 3, 4, 23, 0); 122050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // try anything to set hour to 23:00 !!! 122150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho greenwichcalendar->set(UCAL_HOUR_OF_DAY, 23); 122250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // get time 122350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UDate greenwichdate = greenwichcalendar->getTime(status); 122450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // format every way 122550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString DATA [] = { 1226b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UnicodeString("simple format: "), UnicodeString("04/04/97 23:00 GMT"), 122750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString("MM/dd/yy HH:mm z"), 1228b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UnicodeString("full format: "), UnicodeString("Friday, April 4, 1997 11:00:00 o'clock PM GMT"), 122950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString("EEEE, MMMM d, yyyy h:mm:ss 'o''clock' a z"), 1230b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UnicodeString("long format: "), UnicodeString("April 4, 1997 11:00:00 PM GMT"), 123150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString("MMMM d, yyyy h:mm:ss a z"), 123250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString("default format: "), UnicodeString("04-Apr-97 11:00:00 PM"), 123350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString("dd-MMM-yy h:mm:ss a"), 123450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString("short format: "), UnicodeString("4/4/97 11:00 PM"), 123550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString("M/d/yy h:mm a") 123650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho }; 123750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t DATA_length = (int32_t)(sizeof(DATA) / sizeof(DATA[0])); 123850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 123950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho for (int32_t i=0; i<DATA_length; i+=3) { 124050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho DateFormat *fmt = new SimpleDateFormat(DATA[i+2], Locale::getEnglish(), status); 1241103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if (U_FAILURE(status)) { 1242103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius dataerrln("Unable to create SimpleDateFormat - %s", u_errorName(status)); 1243103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius break; 1244103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 124550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho fmt->setCalendar(*greenwichcalendar); 124650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString result; 124750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho result = fmt->format(greenwichdate, result); 124850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho logln(DATA[i] + result); 124950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (result != DATA[i+1]) 125050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("FAIL: Expected " + DATA[i+1] + ", got " + result); 125150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete fmt; 125250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 1253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 1255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //finally { 1256b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone::adoptDefault(saveDefault); 1257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 1258b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete testdefault; 1259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete greenwichcalendar; 1260b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete thedefault; 1261b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1262b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1263b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 126450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1265b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 126650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1267b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1268b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the formatting of dates in different locales. 1269b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1270b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 1271b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestLocaleDateFormat() // Bug 495 1272b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1273b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate testDate = date(97, UCAL_SEPTEMBER, 15); 127450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho DateFormat *dfFrench = DateFormat::createDateTimeInstance(DateFormat::FULL, 1275b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat::FULL, Locale::getFrench()); 127650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho DateFormat *dfUS = DateFormat::createDateTimeInstance(DateFormat::FULL, 1277b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat::FULL, Locale::getUS()); 127885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString expectedFRENCH ( "lundi 15 septembre 1997 00:00:00 heure avanc\\u00E9e du Pacifique", -1, US_INV ); 1279b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectedFRENCH = expectedFRENCH.unescape(); 128054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString expectedUS ( "Monday, September 15, 1997 at 12:00:00 AM Pacific Daylight Time" ); 1281b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Date set to : " + dateToString(testDate)); 128250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString out; 1283b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (dfUS == NULL || dfFrench == NULL){ 1284b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dataerrln("Error calling DateFormat::createDateTimeInstance)"); 1285b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dfUS; 1286b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dfFrench; 1287b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1288b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1289b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1290b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dfFrench->format(testDate, out); 1291b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Date Formated with French Locale " + out); 1292b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(out == expectedFRENCH)) 1293b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Expected " + expectedFRENCH); 1294b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru out.truncate(0); 1295b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dfUS->format(testDate, out); 1296b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Date Formated with US Locale " + out); 1297b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(out == expectedUS)) 1298b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Expected " + expectedUS); 1299b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dfUS; 1300b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dfFrench; 1301b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1302b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1303b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1304b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test DateFormat(Calendar) API 1305b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1306b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestDateFormatCalendar() { 1307b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *date=0, *time=0, *full=0; 1308b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Calendar *cal=0; 1309b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString str; 1310b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition pos; 1311b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate when; 1312b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 1313b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1314b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Create a formatter for date fields. */ 1315b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru date = DateFormat::createDateInstance(DateFormat::kShort, Locale::getUS()); 1316b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (date == NULL) { 131785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("FAIL: createDateInstance failed"); 1318b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1319b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1320b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1321b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Create a formatter for time fields. */ 1322b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru time = DateFormat::createTimeInstance(DateFormat::kShort, Locale::getUS()); 1323b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (time == NULL) { 1324b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: createTimeInstance failed"); 1325b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1326b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1327b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1328b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Create a full format for output */ 1329b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full = DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, 1330b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale::getUS()); 1331b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (full == NULL) { 1332b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: createInstance failed"); 1333b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1334b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1335b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1336b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Create a calendar */ 1337b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru cal = Calendar::createInstance(Locale::getUS(), ec); 1338b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (cal == NULL || U_FAILURE(ec)) { 133950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln((UnicodeString)"FAIL: Calendar::createInstance failed with " + 1340b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru u_errorName(ec)); 1341b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1342b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1343b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1344b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Parse the date */ 1345b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru cal->clear(); 1346b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru str = UnicodeString("4/5/2001", ""); 1347b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru pos.setIndex(0); 1348b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru date->parse(str, *cal, pos); 1349b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (pos.getIndex() != str.length()) { 1350b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: DateFormat::parse(4/5/2001) failed at " + 1351b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru pos.getIndex()); 1352b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1353b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1354b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1355b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Parse the time */ 1356b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru str = UnicodeString("5:45 PM", ""); 1357b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru pos.setIndex(0); 1358b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru time->parse(str, *cal, pos); 1359b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (pos.getIndex() != str.length()) { 1360b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: DateFormat::parse(17:45) failed at " + 1361b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru pos.getIndex()); 1362b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1363b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 136450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1365b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Check result */ 1366b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru when = cal->getTime(ec); 1367b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(ec)) { 1368b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: cal->getTime() failed with " + u_errorName(ec)); 1369b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1370b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1371b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru str.truncate(0); 1372b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full->format(when, str); 1373b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Thursday, April 5, 2001 5:45:00 PM PDT 986517900000 1374b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (when == 986517900000.0) { 1375b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("Ok: Parsed result: " + str); 1376b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 1377b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: Parsed result: " + str + ", exp 4/5/2001 5:45 PM"); 1378b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1379b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 138050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho FAIL: 1381b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete date; 1382b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete time; 1383b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete full; 1384b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete cal; 1385b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1386b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1387b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1388b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test DateFormat's parsing of space characters. See jitterbug 1916. 1389b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1390b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestSpaceParsing() { 1391b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* DATA[] = { 1392b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1393b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1394b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // pattern, input, expected parse or NULL if expect parse failure 1395b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMM d yy", " 04 05 06", "2006 04 05 00:00:00", 1396b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "04 05 06", "2006 04 05 00:00:00", 1397b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1398b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MM d yy", " 04 05 06", "2006 04 05 00:00:00", 1399b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "04 05 06", "2006 04 05 00:00:00", 1400b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "04/05/06", "2006 04 05 00:00:00", 1401b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "04-05-06", "2006 04 05 00:00:00", 1402b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "04.05.06", "2006 04 05 00:00:00", 1403b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "04 / 05 / 06", "2006 04 05 00:00:00", 1404b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "Apr / 05/ 06", "2006 04 05 00:00:00", 1405b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "Apr-05-06", "2006 04 05 00:00:00", 1406b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "Apr 05, 2006", "2006 04 05 00:00:00", 1407b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1408b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM d yy", " Apr 05 06", "2006 04 05 00:00:00", 1409b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "Apr 05 06", "2006 04 05 00:00:00", 1410b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "Apr05 06", "2006 04 05 00:00:00", 1411b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1412b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "hh:mm:ss a", "12:34:56 PM", "1970 01 01 12:34:56", 1413b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "12:34:56PM", "1970 01 01 12:34:56", 1414b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "12.34.56PM", "1970 01 01 12:34:56", 1415b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "12-34-56 PM", "1970 01 01 12:34:56", 1416b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "12 : 34 : 56 PM", "1970 01 01 12:34:56", 1417b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1418b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MM d yy 'at' hh:mm:ss a", "04/05/06 12:34:56 PM", "2006 04 05 12:34:56", 1419b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1420b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMM dd yyyy hh:mm a", "September 27, 1964 21:56 PM", "1964 09 28 09:56:00", 1421b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "November 4, 2008 0:13 AM", "2008 11 04 00:13:00", 1422b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1423b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "HH'h'mm'min'ss's'", "12h34min56s", "1970 01 01 12:34:56", 1424b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "12h34mi56s", "1970 01 01 12:34:56", 1425b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "12h34m56s", "1970 01 01 12:34:56", 1426b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "12:34:56", "1970 01 01 12:34:56" 1427b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1428b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t DATA_len = sizeof(DATA)/sizeof(DATA[0]); 1429b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1430b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectParse(DATA, DATA_len, Locale("en")); 1431b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1432b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1433b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1434b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test handling of "HHmmss" pattern. 1435b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1436b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestExactCountFormat() { 1437b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* DATA[] = { 1438b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1439b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1440b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // pattern, input, expected parse or NULL if expect parse failure 1441b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "HHmmss", "123456", "1970 01 01 12:34:56", 1442b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "12345", "1970 01 01 01:23:45", 1443b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "1234", NULL, 1444b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "00-05", NULL, 1445b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "12-34", NULL, 1446b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "00+05", NULL, 1447b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ahhmm", "PM730", "1970 01 01 19:30:00", 1448b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1449b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t DATA_len = sizeof(DATA)/sizeof(DATA[0]); 1450b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1451b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectParse(DATA, DATA_len, Locale("en")); 1452b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1453b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1454b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1455b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test handling of white space. 1456b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1457b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestWhiteSpaceParsing() { 1458b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* DATA[] = { 1459b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd", 146050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1461b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // pattern, input, expected parse or null if expect parse failure 146250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1463b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Pattern space run should parse input text space run 1464b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MM d yy", " 04 01 03", "2003 04 01", 1465b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, " 04 01 03 ", "2003 04 01", 1466b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1467b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t DATA_len = sizeof(DATA)/sizeof(DATA[0]); 146850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1469b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectParse(DATA, DATA_len, Locale("en")); 1470b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1471b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1472b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1473b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestInvalidPattern() { 1474b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 1475b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat f(UnicodeString("Yesterday"), ec); 147650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(ec)) { 147750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail construct SimpleDateFormat: %s", u_errorName(ec)); 147850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 147950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 1480b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString out; 1481b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru FieldPosition pos; 1482b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru f.format((UDate)0, out, pos); 1483b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(out); 1484b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // The bug is that the call to format() will crash. By not 1485b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // crashing, the test passes. 1486b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1487b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1488b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestGreekMay() { 1489b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 1490b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date = -9896080848000.0; 1491b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat fmt("EEEE, dd MMMM yyyy h:mm:ss a", Locale("el", "", ""), ec); 149250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(ec)) { 149350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail construct SimpleDateFormat: %s", u_errorName(ec)); 149450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 149550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 1496b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString str; 1497b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.format(date, str); 1498b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition pos(0); 1499b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d2 = fmt.parse(str, pos); 1500b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (date != d2) { 1501b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: unable to parse strings where case-folding changes length"); 1502b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1503b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1504b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1505b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestStandAloneMonths() 1506b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1507b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *EN_DATA[] = { 1508b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1509b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1510b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy LLLL dd H:mm:ss", "fp", "2004 03 10 16:36:31", "2004 March 10 16:36:31", "2004 03 10 16:36:31", 1511b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "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", 1512b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy LLLL dd H:mm:ss", "F", "2004 03 10 16:36:31", "2004 March 10 16:36:31", 1513b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "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", 151450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1515b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 01 01 0:00:00", "January", "1970 01 01 0:00:00", 1516b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 02 01 0:00:00", "February", "1970 02 01 0:00:00", 1517b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 03 01 0:00:00", "March", "1970 03 01 0:00:00", 1518b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 04 01 0:00:00", "April", "1970 04 01 0:00:00", 1519b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 05 01 0:00:00", "May", "1970 05 01 0:00:00", 1520b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 06 01 0:00:00", "June", "1970 06 01 0:00:00", 1521b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 07 01 0:00:00", "July", "1970 07 01 0:00:00", 1522b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 08 01 0:00:00", "August", "1970 08 01 0:00:00", 1523b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 09 01 0:00:00", "September", "1970 09 01 0:00:00", 1524b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 10 01 0:00:00", "October", "1970 10 01 0:00:00", 1525b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 11 01 0:00:00", "November", "1970 11 01 0:00:00", 1526b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 12 01 0:00:00", "December", "1970 12 01 0:00:00", 152750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1528b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 01 01 0:00:00", "Jan", "1970 01 01 0:00:00", 1529b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 02 01 0:00:00", "Feb", "1970 02 01 0:00:00", 1530b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 03 01 0:00:00", "Mar", "1970 03 01 0:00:00", 1531b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 04 01 0:00:00", "Apr", "1970 04 01 0:00:00", 1532b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 05 01 0:00:00", "May", "1970 05 01 0:00:00", 1533b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 06 01 0:00:00", "Jun", "1970 06 01 0:00:00", 1534b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 07 01 0:00:00", "Jul", "1970 07 01 0:00:00", 1535b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 08 01 0:00:00", "Aug", "1970 08 01 0:00:00", 1536b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 09 01 0:00:00", "Sep", "1970 09 01 0:00:00", 1537b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 10 01 0:00:00", "Oct", "1970 10 01 0:00:00", 1538b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 11 01 0:00:00", "Nov", "1970 11 01 0:00:00", 1539b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 12 01 0:00:00", "Dec", "1970 12 01 0:00:00", 1540b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 154150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1542b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *CS_DATA[] = { 1543b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1544b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1545b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy LLLL dd H:mm:ss", "fp", "2004 04 10 16:36:31", "2004 duben 10 16:36:31", "2004 04 10 16:36:31", 1546b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MMMM dd H:mm:ss", "fp", "2004 04 10 16:36:31", "2004 dubna 10 16:36:31", "2004 04 10 16:36:31", 154754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius "yyyy LLL dd H:mm:ss", "fp", "2004 04 10 16:36:31", "2004 dub 10 16:36:31", "2004 04 10 16:36:31", 1548b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy LLLL dd H:mm:ss", "F", "2004 04 10 16:36:31", "2004 duben 10 16:36:31", 1549b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MMMM dd H:mm:ss", "F", "2004 04 10 16:36:31", "2004 dubna 10 16:36:31", 1550b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy LLLL dd H:mm:ss", "pf", "2004 duben 10 16:36:31", "2004 04 10 16:36:31", "2004 duben 10 16:36:31", 1551b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MMMM dd H:mm:ss", "pf", "2004 dubna 10 16:36:31", "2004 04 10 16:36:31", "2004 dubna 10 16:36:31", 155250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1553b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 01 01 0:00:00", "leden", "1970 01 01 0:00:00", 1554b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 02 01 0:00:00", "\\u00FAnor", "1970 02 01 0:00:00", 1555b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 03 01 0:00:00", "b\\u0159ezen", "1970 03 01 0:00:00", 1556b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 04 01 0:00:00", "duben", "1970 04 01 0:00:00", 1557b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 05 01 0:00:00", "kv\\u011Bten", "1970 05 01 0:00:00", 1558b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 06 01 0:00:00", "\\u010Derven", "1970 06 01 0:00:00", 1559b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 07 01 0:00:00", "\\u010Dervenec", "1970 07 01 0:00:00", 1560b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 08 01 0:00:00", "srpen", "1970 08 01 0:00:00", 1561b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 09 01 0:00:00", "z\\u00E1\\u0159\\u00ED", "1970 09 01 0:00:00", 1562b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 10 01 0:00:00", "\\u0159\\u00EDjen", "1970 10 01 0:00:00", 1563b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 11 01 0:00:00", "listopad", "1970 11 01 0:00:00", 1564b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 12 01 0:00:00", "prosinec", "1970 12 01 0:00:00", 1565b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 156654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius "LLL", "fp", "1970 01 01 0:00:00", "led", "1970 01 01 0:00:00", 156754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius "LLL", "fp", "1970 02 01 0:00:00", "\\u00FAno", "1970 02 01 0:00:00", 156854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius "LLL", "fp", "1970 03 01 0:00:00", "b\\u0159e", "1970 03 01 0:00:00", 156954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius "LLL", "fp", "1970 04 01 0:00:00", "dub", "1970 04 01 0:00:00", 157054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius "LLL", "fp", "1970 05 01 0:00:00", "kv\\u011B", "1970 05 01 0:00:00", 157154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius "LLL", "fp", "1970 06 01 0:00:00", "\\u010Dvn", "1970 06 01 0:00:00", 157254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius "LLL", "fp", "1970 07 01 0:00:00", "\\u010Dvc", "1970 07 01 0:00:00", 157354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius "LLL", "fp", "1970 08 01 0:00:00", "srp", "1970 08 01 0:00:00", 157454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius "LLL", "fp", "1970 09 01 0:00:00", "z\\u00E1\\u0159", "1970 09 01 0:00:00", 157554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius "LLL", "fp", "1970 10 01 0:00:00", "\\u0159\\u00EDj", "1970 10 01 0:00:00", 157654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius "LLL", "fp", "1970 11 01 0:00:00", "lis", "1970 11 01 0:00:00", 157754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius "LLL", "fp", "1970 12 01 0:00:00", "pro", "1970 12 01 0:00:00", 1578b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 157950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1580b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(EN_DATA, ARRAY_SIZE(EN_DATA), Locale("en", "", "")); 1581b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(CS_DATA, ARRAY_SIZE(CS_DATA), Locale("cs", "", "")); 1582b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1583b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1584b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestStandAloneDays() 1585b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1586b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *EN_DATA[] = { 1587b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1588b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1589b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 04 0:00:00", "Sunday", "1970 01 04 0:00:00", 1590b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 05 0:00:00", "Monday", "1970 01 05 0:00:00", 1591b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 06 0:00:00", "Tuesday", "1970 01 06 0:00:00", 1592b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 07 0:00:00", "Wednesday", "1970 01 07 0:00:00", 1593b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 01 0:00:00", "Thursday", "1970 01 01 0:00:00", 1594b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 02 0:00:00", "Friday", "1970 01 02 0:00:00", 1595b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 03 0:00:00", "Saturday", "1970 01 03 0:00:00", 159650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1597b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 04 0:00:00", "Sun", "1970 01 04 0:00:00", 1598b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 05 0:00:00", "Mon", "1970 01 05 0:00:00", 1599b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 06 0:00:00", "Tue", "1970 01 06 0:00:00", 1600b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 07 0:00:00", "Wed", "1970 01 07 0:00:00", 1601b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 01 0:00:00", "Thu", "1970 01 01 0:00:00", 1602b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 02 0:00:00", "Fri", "1970 01 02 0:00:00", 1603b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 03 0:00:00", "Sat", "1970 01 03 0:00:00", 1604b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 160550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1606b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *CS_DATA[] = { 1607b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1608b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1609b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 04 0:00:00", "ned\\u011Ble", "1970 01 04 0:00:00", 1610b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 05 0:00:00", "pond\\u011Bl\\u00ED", "1970 01 05 0:00:00", 1611b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 06 0:00:00", "\\u00FAter\\u00FD", "1970 01 06 0:00:00", 1612b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 07 0:00:00", "st\\u0159eda", "1970 01 07 0:00:00", 1613b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 01 0:00:00", "\\u010Dtvrtek", "1970 01 01 0:00:00", 1614b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 02 0:00:00", "p\\u00E1tek", "1970 01 02 0:00:00", 1615b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 03 0:00:00", "sobota", "1970 01 03 0:00:00", 161650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1617b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 04 0:00:00", "ne", "1970 01 04 0:00:00", 1618b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 05 0:00:00", "po", "1970 01 05 0:00:00", 1619b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 06 0:00:00", "\\u00FAt", "1970 01 06 0:00:00", 1620b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 07 0:00:00", "st", "1970 01 07 0:00:00", 1621b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 01 0:00:00", "\\u010Dt", "1970 01 01 0:00:00", 1622b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 02 0:00:00", "p\\u00E1", "1970 01 02 0:00:00", 1623b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 03 0:00:00", "so", "1970 01 03 0:00:00", 1624b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 162550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1626b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(EN_DATA, ARRAY_SIZE(EN_DATA), Locale("en", "", "")); 1627b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(CS_DATA, ARRAY_SIZE(CS_DATA), Locale("cs", "", "")); 1628b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1629b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 16308393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Corneliusvoid DateFormatTest::TestShortDays() 16318393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius{ 16328393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const char *EN_DATA[] = { 16338393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "yyyy MM dd HH:mm:ss", 16348393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 16358393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "EEEEEE, MMM d y", "fp", "2013 01 13 0:00:00", "Su, Jan 13 2013", "2013 01 13 0:00:00", 16368393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "EEEEEE, MMM d y", "fp", "2013 01 16 0:00:00", "We, Jan 16 2013", "2013 01 16 0:00:00", 16378393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "EEEEEE d", "fp", "1970 01 17 0:00:00", "Sa 17", "1970 01 17 0:00:00", 16388393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "cccccc d", "fp", "1970 01 17 0:00:00", "Sa 17", "1970 01 17 0:00:00", 16398393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "cccccc", "fp", "1970 01 03 0:00:00", "Sa", "1970 01 03 0:00:00", 16408393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius }; 16418393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius const char *SV_DATA[] = { 16428393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "yyyy MM dd HH:mm:ss", 16438393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 16448393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "EEEEEE d MMM y", "fp", "2013 01 13 0:00:00", "s\\u00F6 13 jan 2013", "2013 01 13 0:00:00", 16458393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "EEEEEE d MMM y", "fp", "2013 01 16 0:00:00", "on 16 jan 2013", "2013 01 16 0:00:00", 16468393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "EEEEEE d", "fp", "1970 01 17 0:00:00", "l\\u00F6 17", "1970 01 17 0:00:00", 16478393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "cccccc d", "fp", "1970 01 17 0:00:00", "L\\u00F6 17", "1970 01 17 0:00:00", 16488393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "cccccc", "fp", "1970 01 03 0:00:00", "L\\u00F6", "1970 01 03 0:00:00", 16498393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius }; 16508393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius expect(EN_DATA, ARRAY_SIZE(EN_DATA), Locale("en", "", "")); 16518393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius expect(SV_DATA, ARRAY_SIZE(SV_DATA), Locale("sv", "", "")); 16528393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius} 16538393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 1654b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestNarrowNames() 1655b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1656b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *EN_DATA[] = { 1657b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1658b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1659b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MMMMM dd H:mm:ss", "2004 03 10 16:36:31", "2004 M 10 16:36:31", 1660b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy LLLLL dd H:mm:ss", "2004 03 10 16:36:31", "2004 M 10 16:36:31", 166150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1662b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 01 01 0:00:00", "J", 1663b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 02 01 0:00:00", "F", 1664b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 03 01 0:00:00", "M", 1665b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 04 01 0:00:00", "A", 1666b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 05 01 0:00:00", "M", 1667b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 06 01 0:00:00", "J", 1668b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 07 01 0:00:00", "J", 1669b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 08 01 0:00:00", "A", 1670b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 09 01 0:00:00", "S", 1671b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 10 01 0:00:00", "O", 1672b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 11 01 0:00:00", "N", 1673b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 12 01 0:00:00", "D", 167450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1675b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 01 01 0:00:00", "J", 1676b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 02 01 0:00:00", "F", 1677b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 03 01 0:00:00", "M", 1678b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 04 01 0:00:00", "A", 1679b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 05 01 0:00:00", "M", 1680b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 06 01 0:00:00", "J", 1681b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 07 01 0:00:00", "J", 1682b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 08 01 0:00:00", "A", 1683b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 09 01 0:00:00", "S", 1684b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 10 01 0:00:00", "O", 1685b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 11 01 0:00:00", "N", 1686b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 12 01 0:00:00", "D", 1687b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1688b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 04 0:00:00", "S", 1689b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 05 0:00:00", "M", 1690b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 06 0:00:00", "T", 1691b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 07 0:00:00", "W", 1692b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 01 0:00:00", "T", 1693b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 02 0:00:00", "F", 1694b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 03 0:00:00", "S", 169550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1696b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 04 0:00:00", "S", 1697b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 05 0:00:00", "M", 1698b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 06 0:00:00", "T", 1699b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 07 0:00:00", "W", 1700b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 01 0:00:00", "T", 1701b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 02 0:00:00", "F", 1702b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 03 0:00:00", "S", 1703b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 170450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1705b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *CS_DATA[] = { 1706b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1707b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1708b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy LLLLL dd H:mm:ss", "2004 04 10 16:36:31", "2004 d 10 16:36:31", 1709b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "yyyy MMMMM dd H:mm:ss", "2004 04 10 16:36:31", "2004 4 10 16:36:31", 1710b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1711b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMMM", "1970 01 01 0:00:00", "1", 1712b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMMM", "1970 02 01 0:00:00", "2", 1713b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMMM", "1970 03 01 0:00:00", "3", 1714b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMMM", "1970 04 01 0:00:00", "4", 1715b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMMM", "1970 05 01 0:00:00", "5", 1716b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMMM", "1970 06 01 0:00:00", "6", 1717b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMMM", "1970 07 01 0:00:00", "7", 1718b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMMM", "1970 08 01 0:00:00", "8", 1719b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMMM", "1970 09 01 0:00:00", "9", 1720b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMMM", "1970 10 01 0:00:00", "10", 1721b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMMM", "1970 11 01 0:00:00", "11", 1722b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMMM", "1970 12 01 0:00:00", "12", 172350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1724b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 01 01 0:00:00", "l", 1725b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 02 01 0:00:00", "\\u00FA", 1726b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 03 01 0:00:00", "b", 1727b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 04 01 0:00:00", "d", 1728b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 05 01 0:00:00", "k", 1729b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 06 01 0:00:00", "\\u010D", 1730b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 07 01 0:00:00", "\\u010D", 1731b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 08 01 0:00:00", "s", 1732b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 09 01 0:00:00", "z", 1733b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 10 01 0:00:00", "\\u0159", 1734b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 11 01 0:00:00", "l", 1735b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 12 01 0:00:00", "p", 1736b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1737b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 04 0:00:00", "N", 1738b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 05 0:00:00", "P", 1739b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 06 0:00:00", "\\u00DA", 1740b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 07 0:00:00", "S", 1741b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 01 0:00:00", "\\u010C", 1742b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 02 0:00:00", "P", 1743b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 03 0:00:00", "S", 1744b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1745b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 04 0:00:00", "N", 1746b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 05 0:00:00", "P", 1747b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 06 0:00:00", "\\u00DA", 1748b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 07 0:00:00", "S", 1749b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 01 0:00:00", "\\u010C", 1750b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 02 0:00:00", "P", 1751b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 03 0:00:00", "S", 1752b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 175350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1754b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectFormat(EN_DATA, ARRAY_SIZE(EN_DATA), Locale("en", "", "")); 1755b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectFormat(CS_DATA, ARRAY_SIZE(CS_DATA), Locale("cs", "", "")); 1756b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1757b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1758b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestEras() 1759b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1760b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *EN_DATA[] = { 1761b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd", 1762b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1763b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy G", "fp", "1951 07 17", "July 17 1951 AD", "1951 07 17", 1764b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy GG", "fp", "1951 07 17", "July 17 1951 AD", "1951 07 17", 1765b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy GGG", "fp", "1951 07 17", "July 17 1951 AD", "1951 07 17", 1766b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy GGGG", "fp", "1951 07 17", "July 17 1951 Anno Domini", "1951 07 17", 1767b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1768b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy G", "fp", "-438 07 17", "July 17 0439 BC", "-438 07 17", 1769b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy GG", "fp", "-438 07 17", "July 17 0439 BC", "-438 07 17", 1770b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy GGG", "fp", "-438 07 17", "July 17 0439 BC", "-438 07 17", 1771b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy GGGG", "fp", "-438 07 17", "July 17 0439 Before Christ", "-438 07 17", 1772b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 177350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1774b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(EN_DATA, ARRAY_SIZE(EN_DATA), Locale("en", "", "")); 1775b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1776b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1777b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestQuarters() 1778b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1779b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *EN_DATA[] = { 1780b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd", 1781b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1782b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "Q", "fp", "1970 01 01", "1", "1970 01 01", 1783b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "QQ", "fp", "1970 04 01", "02", "1970 04 01", 1784b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "QQQ", "fp", "1970 07 01", "Q3", "1970 07 01", 1785b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "QQQQ", "fp", "1970 10 01", "4th quarter", "1970 10 01", 1786b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1787b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "q", "fp", "1970 01 01", "1", "1970 01 01", 1788b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "qq", "fp", "1970 04 01", "02", "1970 04 01", 1789b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "qqq", "fp", "1970 07 01", "Q3", "1970 07 01", 1790b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "qqqq", "fp", "1970 10 01", "4th quarter", "1970 10 01", 1791b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 179250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1793b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(EN_DATA, ARRAY_SIZE(EN_DATA), Locale("en", "", "")); 1794b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1795b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1796b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1797b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test parsing. Input is an array that starts with the following 1798b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * header: 1799b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1800b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [0] = pattern string to parse [i+2] with 1801b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1802b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * followed by test cases, each of which is 3 array elements: 1803b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1804b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i] = pattern, or NULL to reuse prior pattern 1805b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i+1] = input string 1806b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i+2] = expected parse result (parsed with pattern [0]) 1807b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1808b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If expect parse failure, then [i+2] should be NULL. 1809b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1810b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::expectParse(const char** data, int32_t data_length, 1811b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const Locale& loc) { 1812b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UDate FAIL = (UDate) -1; 1813b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UnicodeString FAIL_STR("parse failure"); 1814b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t i = 0; 1815b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1816b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 1817b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat fmt("", loc, ec); 1818b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat ref(data[i++], loc, ec); 1819b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat gotfmt("G yyyy MM dd HH:mm:ss z", loc, ec); 1820b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(ec)) { 182150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("FAIL: SimpleDateFormat constructor - %s", u_errorName(ec)); 1822b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1823b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1824b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1825b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* currentPat = NULL; 1826b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru while (i<data_length) { 1827b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* pattern = data[i++]; 1828b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* input = data[i++]; 1829b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* expected = data[i++]; 1830b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1831b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ec = U_ZERO_ERROR; 1832b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (pattern != NULL) { 1833b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.applyPattern(pattern); 1834b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru currentPat = pattern; 1835b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1836b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate got = fmt.parse(input, ec); 1837b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString gotstr(FAIL_STR); 1838b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(ec)) { 1839b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru got = FAIL; 1840b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 1841b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru gotstr.remove(); 1842b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru gotfmt.format(got, gotstr); 1843b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1844b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1845b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec2 = U_ZERO_ERROR; 1846b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate exp = FAIL; 1847b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString expstr(FAIL_STR); 1848b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (expected != NULL) { 1849b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expstr = expected; 1850b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru exp = ref.parse(expstr, ec2); 1851b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(ec2)) { 1852b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // This only happens if expected is in wrong format -- 1853b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // should never happen once test is debugged. 1854b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: Internal test error"); 1855b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1856b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1857b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1858b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1859b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (got == exp) { 1860b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Ok: " + input + " x " + 186150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho currentPat + " => " + gotstr); 1862b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 1863b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: " + input + " x " + 1864b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru currentPat + " => " + gotstr + ", expected " + 1865b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expstr); 1866b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 186750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 1868b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1869b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1870b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1871b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test formatting and parsing. Input is an array that starts 1872b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * with the following header: 1873b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1874b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [0] = pattern string to parse [i+2] with 1875b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1876b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * followed by test cases, each of which is 3 array elements: 1877b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1878b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i] = pattern, or null to reuse prior pattern 1879b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i+1] = control string, either "fp", "pf", or "F". 1880b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i+2..] = data strings 1881b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1882b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The number of data strings depends on the control string. 1883b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Examples: 1884b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1. "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", 1885b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 'f': Format date [i+2] (as parsed using pattern [0]) and expect string [i+3]. 1886b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 'p': Parse string [i+3] and expect date [i+4]. 1887b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1888b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 2. "y/M/d H:mm:ss.SSS", "F", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31.567" 1889b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 'F': Format date [i+2] and expect string [i+3], 1890b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * then parse string [i+3] and expect date [i+2]. 1891b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1892b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 3. "y/M/d H:mm:ss.SSSS", "pf", "2004/3/10 16:36:31.5679", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31.5670", 1893b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 'p': Parse string [i+2] and expect date [i+3]. 1894b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 'f': Format date [i+3] and expect string [i+4]. 1895b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1896b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::expect(const char** data, int32_t data_length, 1897b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const Locale& loc) { 1898b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t i = 0; 1899b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 1900b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString str, str2; 1901b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat fmt("", loc, ec); 1902b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat ref(data[i++], loc, ec); 1903b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat univ("EE G yyyy MM dd HH:mm:ss.SSS z", loc, ec); 190450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(ec)) { 190550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail construct SimpleDateFormat: %s", u_errorName(ec)); 190650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 190750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 1908b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1909b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString currentPat; 1910b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru while (i<data_length) { 1911b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* pattern = data[i++]; 1912b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (pattern != NULL) { 1913b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.applyPattern(pattern); 1914b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru currentPat = pattern; 1915b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1916b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1917b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* control = data[i++]; 1918b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1919b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (uprv_strcmp(control, "fp") == 0) { 1920b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // 'f' 1921b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* datestr = data[i++]; 1922b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* string = data[i++]; 1923b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date = ref.parse(ctou(datestr), ec); 1924b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!assertSuccess("parse", ec)) return; 1925b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".format(" + datestr + ")", 1926b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ctou(string), 1927b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.format(date, str.remove())); 1928b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // 'p' 1929b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru datestr = data[i++]; 1930b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru date = ref.parse(ctou(datestr), ec); 1931b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!assertSuccess("parse", ec)) return; 1932b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate parsedate = fmt.parse(ctou(string), ec); 1933b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (assertSuccess((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")", ec)) { 1934b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")", 1935b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(date, str.remove()), 1936b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(parsedate, str2.remove())); 1937b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1938b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1939b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1940b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else if (uprv_strcmp(control, "pf") == 0) { 1941b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // 'p' 1942b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* string = data[i++]; 1943b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* datestr = data[i++]; 1944b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date = ref.parse(ctou(datestr), ec); 1945b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!assertSuccess("parse", ec)) return; 1946b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate parsedate = fmt.parse(ctou(string), ec); 1947b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (assertSuccess((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")", ec)) { 1948b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")", 1949b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(date, str.remove()), 1950b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(parsedate, str2.remove())); 1951b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1952b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // 'f' 1953b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru string = data[i++]; 1954b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".format(" + datestr + ")", 1955b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ctou(string), 1956b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.format(date, str.remove())); 1957b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1958b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1959b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else if (uprv_strcmp(control, "F") == 0) { 1960b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* datestr = data[i++]; 1961b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* string = data[i++]; 1962b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date = ref.parse(ctou(datestr), ec); 1963b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!assertSuccess("parse", ec)) return; 1964b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".format(" + datestr + ")", 1965b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ctou(string), 1966b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.format(date, str.remove())); 1967b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1968b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate parsedate = fmt.parse(string, ec); 1969b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (assertSuccess((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")", ec)) { 1970b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")", 1971b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(date, str.remove()), 1972b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(parsedate, str2.remove())); 1973b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1974b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1975b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1976b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else { 1977b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Invalid control string " + control); 1978b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1979b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1980b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1981b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1982b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1983b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1984b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test formatting. Input is an array that starts 1985b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * with the following header: 1986b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1987b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [0] = pattern string to parse [i+2] with 1988b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1989b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * followed by test cases, each of which is 3 array elements: 1990b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1991b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i] = pattern, or null to reuse prior pattern 1992b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i+1] = data string a 1993b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i+2] = data string b 1994b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1995b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Examples: 1996b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Format date [i+1] and expect string [i+2]. 1997b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1998b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * "y/M/d H:mm:ss.SSSS", "2004/3/10 16:36:31.5679", "2004 03 10 16:36:31.567" 1999b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 2000b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::expectFormat(const char** data, int32_t data_length, 2001b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const Locale& loc) { 2002b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t i = 0; 2003b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 2004b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString str, str2; 2005b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat fmt("", loc, ec); 2006b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat ref(data[i++], loc, ec); 2007b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat univ("EE G yyyy MM dd HH:mm:ss.SSS z", loc, ec); 200850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(ec)) { 200950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail construct SimpleDateFormat: %s", u_errorName(ec)); 201050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 201150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 2012b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2013b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString currentPat; 2014b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2015b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru while (i<data_length) { 2016b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* pattern = data[i++]; 2017b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (pattern != NULL) { 2018b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.applyPattern(pattern); 2019b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru currentPat = pattern; 2020b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2021b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2022b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* datestr = data[i++]; 2023b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* string = data[i++]; 2024b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date = ref.parse(ctou(datestr), ec); 2025b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!assertSuccess("parse", ec)) return; 2026b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".format(" + datestr + ")", 2027b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ctou(string), 2028b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.format(date, str.remove())); 2029b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2030b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 2031b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2032b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestGenericTime() { 2033b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const Locale en("en"); 2034b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // Note: We no longer parse strings in different styles. 2035b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho/* 2036b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* ZDATA[] = { 2037b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm zzz", 2038b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // round trip 2039b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm zzzz", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 Pacific Standard Time", 2040b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm zzz", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 PST", 2041b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm vvvv", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 Pacific Time", 2042b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm v", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 PT", 2043b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // non-generic timezone string influences dst offset even if wrong for date/time 2044b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm zzz", "pf", "2004/1/1 1:00 PDT", "2004 01 01 01:00 PDT", "2004/1/1 0:00 PST", 2045b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm vvvv", "pf", "2004/1/1 1:00 PDT", "2004 01 01 01:00 PDT", "2004/1/1 0:00 Pacific Time", 2046b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm zzz", "pf", "2004/7/1 1:00 PST", "2004 07 01 02:00 PDT", "2004/7/1 2:00 PDT", 2047b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm vvvv", "pf", "2004/7/1 1:00 PST", "2004 07 01 02:00 PDT", "2004/7/1 2:00 Pacific Time", 2048b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // generic timezone generates dst offset appropriate for local time 2049b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "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", 2050b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "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", 2051b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "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", 2052b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "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", 2053b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // daylight savings time transition edge cases. 2054b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // time to parse does not really exist, PT interpreted as earlier time 2055b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm zzz", "pf", "2005/4/3 2:30 PT", "2005 04 03 03:30 PDT", "2005/4/3 3:30 PDT", 2056b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm zzz", "pf", "2005/4/3 2:30 PST", "2005 04 03 03:30 PDT", "2005/4/3 3:30 PDT", 2057b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm zzz", "pf", "2005/4/3 2:30 PDT", "2005 04 03 01:30 PST", "2005/4/3 1:30 PST", 2058b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "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", 2059b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "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", 2060b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "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", 2061b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm", "pf", "2005/4/3 2:30", "2005 04 03 03:30 PDT", "2005/4/3 3:30", 2062b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // time to parse is ambiguous, PT interpreted as later time 2063b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm zzz", "pf", "2005/10/30 1:30 PT", "2005 10 30 01:30 PST", "2005/10/30 1:30 PST", 2064b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm v", "pf", "2005/10/30 1:30 PT", "2005 10 30 01:30 PST", "2005/10/30 1:30 PT", 2065b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm", "pf", "2005/10/30 1:30 PT", "2005 10 30 01:30 PST", "2005/10/30 1:30", 2066b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2067b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm zzz", "pf", "2004/10/31 1:30 PT", "2004 10 31 01:30 PST", "2004/10/31 1:30 PST", 2068b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "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", 2069b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "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", 2070b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm v", "pf", "2004/10/31 1:30 PT", "2004 10 31 01:30 PST", "2004/10/31 1:30 PT", 2071b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm v", "pf", "2004/10/31 1:30 PST", "2004 10 31 01:30 PST", "2004/10/31 1:30 PT", 2072b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm v", "pf", "2004/10/31 1:30 PDT", "2004 10 31 01:30 PDT", "2004/10/31 1:30 PT", 2073b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm", "pf", "2004/10/31 1:30", "2004 10 31 01:30 PST", "2004/10/31 1:30", 2074b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 2075b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho*/ 2076b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho const char* ZDATA[] = { 2077b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "yyyy MM dd HH:mm zzz", 2078b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // round trip 2079b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm zzzz", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 Pacific Standard Time", 2080b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm zzz", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 PST", 2081b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm vvvv", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 Pacific Time", 2082b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm v", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 PT", 2083b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // non-generic timezone string influences dst offset even if wrong for date/time 2084b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm zzz", "pf", "2004/1/1 1:00 PDT", "2004 01 01 01:00 PDT", "2004/1/1 0:00 PST", 2085b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm zzz", "pf", "2004/7/1 1:00 PST", "2004 07 01 02:00 PDT", "2004/7/1 2:00 PDT", 2086b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // generic timezone generates dst offset appropriate for local time 2087b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm zzz", "pf", "2004/1/1 1:00 PST", "2004 01 01 01:00 PST", "2004/1/1 1:00 PST", 2088b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm vvvv", "pf", "2004/1/1 1:00 Pacific Time", "2004 01 01 01:00 PST", "2004/1/1 1:00 Pacific Time", 2089b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm zzz", "pf", "2004/7/1 1:00 PDT", "2004 07 01 01:00 PDT", "2004/7/1 1:00 PDT", 2090b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm vvvv", "pf", "2004/7/1 1:00 Pacific Time", "2004 07 01 01:00 PDT", "2004/7/1 1:00 Pacific Time", 2091b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // daylight savings time transition edge cases. 2092b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // time to parse does not really exist, PT interpreted as earlier time 2093b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm zzz", "pf", "2005/4/3 2:30 PST", "2005 04 03 03:30 PDT", "2005/4/3 3:30 PDT", 2094b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm zzz", "pf", "2005/4/3 2:30 PDT", "2005 04 03 01:30 PST", "2005/4/3 1:30 PST", 2095b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "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", 2096b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm", "pf", "2005/4/3 2:30", "2005 04 03 03:30 PDT", "2005/4/3 3:30", 2097b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // time to parse is ambiguous, PT interpreted as later time 2098b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm v", "pf", "2005/10/30 1:30 PT", "2005 10 30 01:30 PST", "2005/10/30 1:30 PT", 2099b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm", "pf", "2005/10/30 1:30 PT", "2005 10 30 01:30 PST", "2005/10/30 1:30", 2100b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 2101b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "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", 2102b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "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", 2103b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm v", "pf", "2004/10/31 1:30 PT", "2004 10 31 01:30 PST", "2004/10/31 1:30 PT", 2104b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm", "pf", "2004/10/31 1:30", "2004 10 31 01:30 PST", "2004/10/31 1:30", 2105b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho }; 2106b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 2107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t ZDATA_length = sizeof(ZDATA)/ sizeof(ZDATA[0]); 2108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(ZDATA, ZDATA_length, en); 2109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 2111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2112b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho logln("cross format/parse tests"); // Note: We no longer support cross format/parse 2113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString basepat("yy/MM/dd H:mm "); 211450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho SimpleDateFormat formats[] = { 2115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat(basepat + "vvv", en, status), 2116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat(basepat + "vvvv", en, status), 2117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat(basepat + "zzz", en, status), 2118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat(basepat + "zzzz", en, status) 2119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 212050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(status)) { 212150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail construct SimpleDateFormat: %s", u_errorName(status)); 212250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 212350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 2124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t formats_length = sizeof(formats)/sizeof(formats[0]); 2125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString test; 2127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat univ("yyyy MM dd HH:mm zzz", en, status); 2128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 212950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho const UnicodeString times[] = { 213050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho "2004 01 02 03:04 PST", 213150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho "2004 07 08 09:10 PDT" 2132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 2133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t times_length = sizeof(times)/sizeof(times[0]); 2134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int i = 0; i < times_length; ++i) { 2135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d = univ.parse(times[i], status); 2136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(UnicodeString("\ntime: ") + d); 2137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int j = 0; j < formats_length; ++j) { 2138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru test.remove(); 2139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru formats[j].format(d, test); 2140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("\ntest: '" + test + "'"); 2141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int k = 0; k < formats_length; ++k) { 2142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate t = formats[k].parse(test, status); 2143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_SUCCESS(status)) { 2144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (d != t) { 214550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln((UnicodeString)"FAIL: format " + k + 214650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho " incorrectly parsed output of format " + j + 2147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru " (" + test + "), returned " + 2148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateToString(t) + " instead of " + dateToString(d)); 2149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 2150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"OK: format " + k + " parsed ok"); 2151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else if (status == U_PARSE_ERROR) { 215350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln((UnicodeString)"FAIL: format " + k + 215450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho " could not parse output of format " + j + 2155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru " (" + test + ")"); 2156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 2161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestGenericTimeZoneOrder() { 2163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // generic times should parse the same no matter what the placement of the time zone string 2164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2165b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // Note: We no longer support cross style format/parse 2166b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 2167b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho //const char* XDATA[] = { 2168b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // "yyyy MM dd HH:mm zzz", 2169b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // // standard time, explicit daylight/standard 2170b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // "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", 2171b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // "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", 2172b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // "zzz y/M/d H:mm", "pf", "PT 2004/1/1 1:00", "2004 01 01 01:00 PST", "PST 2004/1/1 1:00", 2173b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 2174b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // // standard time, generic 2175b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // "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", 2176b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // "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", 2177b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // "vvvv y/M/d H:mm", "pf", "PT 2004/1/1 1:00", "2004 01 01 01:00 PST", "Pacific Time 2004/1/1 1:00", 2178b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 2179b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // // dahylight time, explicit daylight/standard 2180b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // "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", 2181b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // "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", 2182b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // "zzz y/M/d H:mm", "pf", "PT 2004/7/1 1:00", "2004 07 01 01:00 PDT", "PDT 2004/7/1 1:00", 2183b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 2184b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // // daylight time, generic 2185b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // "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", 2186b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // "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", 2187b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // "vvvv y/M/d H:mm", "pf", "PT 2004/7/1 1:00", "2004 07 01 01:00 PDT", "Pacific Time 2004/7/1 1:00", 2188b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho //}; 2189b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* XDATA[] = { 2190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm zzz", 2191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // standard time, explicit daylight/standard 2192b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm zzz", "pf", "2004/1/1 1:00 PST", "2004 01 01 01:00 PST", "2004/1/1 1:00 PST", 2193b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d zzz H:mm", "pf", "2004/1/1 PST 1:00", "2004 01 01 01:00 PST", "2004/1/1 PST 1:00", 2194b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "zzz y/M/d H:mm", "pf", "PST 2004/1/1 1:00", "2004 01 01 01:00 PST", "PST 2004/1/1 1:00", 2195b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2196b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // standard time, generic 2197b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm vvvv", "pf", "2004/1/1 1:00 Pacific Time", "2004 01 01 01:00 PST", "2004/1/1 1:00 Pacific Time", 2198b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d vvvv H:mm", "pf", "2004/1/1 Pacific Time 1:00", "2004 01 01 01:00 PST", "2004/1/1 Pacific Time 1:00", 2199b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "vvvv y/M/d H:mm", "pf", "Pacific Time 2004/1/1 1:00", "2004 01 01 01:00 PST", "Pacific Time 2004/1/1 1:00", 2200b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2201b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // dahylight time, explicit daylight/standard 2202b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm zzz", "pf", "2004/7/1 1:00 PDT", "2004 07 01 01:00 PDT", "2004/7/1 1:00 PDT", 2203b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d zzz H:mm", "pf", "2004/7/1 PDT 1:00", "2004 07 01 01:00 PDT", "2004/7/1 PDT 1:00", 2204b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "zzz y/M/d H:mm", "pf", "PDT 2004/7/1 1:00", "2004 07 01 01:00 PDT", "PDT 2004/7/1 1:00", 2205b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2206b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // daylight time, generic 2207b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm v", "pf", "2004/7/1 1:00 PT", "2004 07 01 01:00 PDT", "2004/7/1 1:00 PT", 2208b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d v H:mm", "pf", "2004/7/1 PT 1:00", "2004 07 01 01:00 PDT", "2004/7/1 PT 1:00", 2209b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "v y/M/d H:mm", "pf", "PT 2004/7/1 1:00", "2004 07 01 01:00 PDT", "PT 2004/7/1 1:00", 2210b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 2211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t XDATA_length = sizeof(XDATA)/sizeof(XDATA[0]); 2212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale en("en"); 2213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(XDATA, XDATA_length, en); 2214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 2215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestZTimeZoneParsing(void) { 2217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 2218b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const Locale en("en"); 2219b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString test; 2220b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //SimpleDateFormat univ("yyyy-MM-dd'T'HH:mm Z", en, status); 2221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat univ("HH:mm Z", en, status); 222250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (failure(status, "construct SimpleDateFormat", TRUE)) return; 2223b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const TimeZone *t = TimeZone::getGMT(); 2224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.setTimeZone(*t); 222550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2226b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.setLenient(false); 2227b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition pp(0); 2228b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru struct { 2229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString input; 2230b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString expected_result; 2231b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } tests[] = { 2232b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "11:00 -0200", "13:00 +0000" }, 2233b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "11:00 +0200", "09:00 +0000" }, 2234b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "11:00 +0400", "07:00 +0000" }, 2235b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "11:00 +0530", "05:30 +0000" } 2236b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 2237b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2238b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result; 2239b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t tests_length = sizeof(tests)/sizeof(tests[0]); 2240b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int i = 0; i < tests_length; ++i) { 2241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru pp.setIndex(0); 2242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d = univ.parse(tests[i].input, pp); 2243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(pp.getIndex() != tests[i].input.length()){ 2244b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho errln("Test %i: setZoneString() did not succeed. Consumed: %i instead of %i", 2245b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho i, pp.getIndex(), tests[i].input.length()); 2246b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 224750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 2248b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru result.remove(); 2249b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(d, result); 2250b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(result != tests[i].expected_result) { 2251b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("Expected " + tests[i].expected_result 2252b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru + " got " + result); 2253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 2254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("SUCCESS: Parsed " + tests[i].input 2256b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru + " got " + result 2257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru + " expected " + tests[i].expected_result); 2258b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 2260b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2261b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestHost(void) 2262b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 2263103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#if U_PLATFORM_HAS_WIN32_API 2264b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Win32DateTimeTest::testLocales(this); 2265b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 2266b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 2267b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2268b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// Relative Date Tests 2269b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 227050294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovoid DateFormatTest::TestRelative(int daysdelta, 2271b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const Locale& loc, 2272b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *expectChars) { 2273b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru char banner[25]; 2274b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru sprintf(banner, "%d", daysdelta); 2275b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString bannerStr(banner, ""); 227650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2277b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 227850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2279b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru FieldPosition pos(0); 2280b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString test; 2281b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale en("en"); 2282b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *fullrelative = DateFormat::createDateInstance(DateFormat::kFullRelative, loc); 2283b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2284b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fullrelative == NULL) { 228585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("DateFormat::createDateInstance(DateFormat::kFullRelative, %s) returned NULL", loc.getName()); 2286b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 2287b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2288b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2289b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *full = DateFormat::createDateInstance(DateFormat::kFull , loc); 229050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2291b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (full == NULL) { 2292b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("DateFormat::createDateInstance(DateFormat::kFull, %s) returned NULL", loc.getName()); 2293b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 2294b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 229550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2296b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *en_full = DateFormat::createDateInstance(DateFormat::kFull, en); 229750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2298b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (en_full == NULL) { 2299b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("DateFormat::createDateInstance(DateFormat::kFull, en) returned NULL"); 2300b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 2301b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 230250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2303b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *en_fulltime = DateFormat::createDateTimeInstance(DateFormat::kFull,DateFormat::kFull,en); 230450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2305b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (en_fulltime == NULL) { 2306b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, en) returned NULL"); 2307b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 2308b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 230950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2310b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result; 2311b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString normalResult; 2312b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString expect; 2313b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString parseResult; 231450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2315b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Calendar *c = Calendar::createInstance(status); 2316b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2317b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Today = Today 2318b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru c->setTime(Calendar::getNow(), status); 2319b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(daysdelta != 0) { 2320b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru c->add(Calendar::DATE,daysdelta,status); 2321b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2322b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 2323b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2324b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // calculate the expected string 2325b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(expectChars != NULL) { 2326b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect = expectChars; 2327b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 2328b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full->format(*c, expect, pos); // expected = normal full 2329b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 233050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2331b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fullrelative ->format(*c, result, pos); 2332b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru en_full ->format(*c, normalResult, pos); 233350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2334b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(result != expect) { 2335b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: Relative Format ["+bannerStr+"] of "+normalResult+" failed, expected "+expect+" but got " + result); 2336b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 2337b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("PASS: Relative Format ["+bannerStr+"] of "+normalResult+" got " + result); 2338b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 233950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 234050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2341b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //verify 2342b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d = fullrelative->parse(result, status); 2343b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 234450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2345b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString parseFormat; // parse rel->format full 2346b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru en_full->format(d, parseFormat, status); 234750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2348b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString origFormat; 2349b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru en_full->format(*c, origFormat, pos); 235050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2351b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(parseFormat!=origFormat) { 2352b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: Relative Parse ["+bannerStr+"] of "+result+" failed, expected "+parseFormat+" but got "+origFormat); 2353b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 2354b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("PASS: Relative Parse ["+bannerStr+"] of "+result+" passed, got "+parseFormat); 2355b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2356b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2357b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete full; 2358b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fullrelative; 2359b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete en_fulltime; 2360b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete en_full; 2361b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete c; 2362b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 2363b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2364b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2365b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestRelative(void) 2366b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 2367b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale en("en"); 2368b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( 0, en, "Today"); 2369b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative(-1, en, "Yesterday"); 2370b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( 1, en, "Tomorrow"); 2371b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( 2, en, NULL); 2372b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( -2, en, NULL); 2373b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( 3, en, NULL); 2374b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( -3, en, NULL); 2375b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( 300, en, NULL); 2376b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( -300, en, NULL); 2377b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 2378b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2379b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestRelativeClone(void) 2380b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 2381b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 2382b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Verify that a cloned formatter gives the same results 2383b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru and is useable after the original has been deleted. 2384b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 2385b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 2386b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale loc("en"); 2387b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate now = Calendar::getNow(); 2388b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *full = DateFormat::createDateInstance(DateFormat::kFullRelative, loc); 2389b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (full == NULL) { 239085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("FAIL: Can't create Relative date instance"); 2391b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 2392b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2393b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result1; 2394b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full->format(now, result1, status); 2395b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Format *fullClone = full->clone(); 2396b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete full; 2397b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full = NULL; 2398b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2399b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result2; 2400b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fullClone->format(now, result2, status); 2401b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 2402b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (result1 != result2) { 2403b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: Clone returned different result from non-clone."); 2404b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2405b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fullClone; 2406b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 2407b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2408b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestHostClone(void) 2409b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 2410b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 2411b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Verify that a cloned formatter gives the same results 2412b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru and is useable after the original has been deleted. 2413b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 2414b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // This is mainly important on Windows. 2415b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 2416b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale loc("en_US@compat=host"); 2417b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate now = Calendar::getNow(); 2418b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *full = DateFormat::createDateInstance(DateFormat::kFull, loc); 2419b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (full == NULL) { 242085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("FAIL: Can't create Relative date instance"); 2421b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 2422b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2423b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result1; 2424b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full->format(now, result1, status); 2425b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Format *fullClone = full->clone(); 2426b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete full; 2427b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full = NULL; 2428b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2429b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result2; 2430b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fullClone->format(now, result2, status); 2431b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 2432b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (result1 != result2) { 2433b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: Clone returned different result from non-clone."); 2434b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2435b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fullClone; 2436b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 2437b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2438b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestTimeZoneDisplayName() 2439b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 2440b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // This test data was ported from ICU4J. Don't know why the 6th column in there because it's not being 2441b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // used currently. 2442b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *fallbackTests[][6] = { 2443b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 2444b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00", "-8:00" }, 2445103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZZ", "-08:00", "-8:00" }, 2446b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "PST", "America/Los_Angeles" }, 2447b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "Pacific Standard Time", "America/Los_Angeles" }, 2448b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 2449b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" }, 2450b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "PDT", "America/Los_Angeles" }, 2451b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "Pacific Daylight Time", "America/Los_Angeles" }, 2452b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "PT", "America/Los_Angeles" }, 2453b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "Pacific Time", "America/Los_Angeles" }, 245454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "VVVV", "Los Angeles Time", "America/Los_Angeles" }, 24558393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "en_GB", "America/Los_Angeles", "2004-01-15T12:00:00Z", "z", "GMT-8", "America/Los_Angeles" }, 2456b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "Z", "-0700", "-7:00" }, 2457b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" }, 2458b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "z", "MST", "America/Phoenix" }, 2459b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "zzzz", "Mountain Standard Time", "America/Phoenix" }, 2460b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 2461b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" }, 2462b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "z", "MST", "America/Phoenix" }, 2463b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "zzzz", "Mountain Standard Time", "America/Phoenix" }, 2464b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "v", "MST", "America/Phoenix" }, 2465b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "vvvv", "Mountain Standard Time", "America/Phoenix" }, 246654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "VVVV", "Phoenix Time", "America/Phoenix" }, 2467b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2468b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2469b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 24708393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 2471103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "Argentina Standard Time", "-3:00" }, 2472b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2473b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 24748393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 2475103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "Argentina Standard Time", "-3:00" }, 247654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Buenos Aires Time", "America/Buenos_Aires" }, 2477103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Argentina Standard Time", "America/Buenos_Aires" }, 247854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "VVVV", "Buenos Aires Time", "America/Buenos_Aires" }, 2479b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2480b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2481b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 24828393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 2483103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "Argentina Standard Time", "-3:00" }, 2484b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2485b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 24868393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 2487103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "Argentina Standard Time", "-3:00" }, 248854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Buenos Aires Time", "America/Buenos_Aires" }, 2489103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Argentina Standard Time", "America/Buenos_Aires" }, 249054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "VVVV", "Buenos Aires Time", "America/Buenos_Aires" }, 2491b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2492b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 2493b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "-5:00" }, 24948393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "en", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-5", "-5:00" }, 2495b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "Cuba Standard Time", "-5:00" }, 2496b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 2497b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "-4:00" }, 24988393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "en", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-4", "-4:00" }, 2499b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "Cuba Daylight Time", "-4:00" }, 2500b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "v", "Cuba Time", "America/Havana" }, 2501b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "Cuba Time", "America/Havana" }, 2502b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "VVVV", "Cuba Time", "America/Havana" }, 2503b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2504b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 2505b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 25068393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11", "+11:00" }, 2507b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "Australian Eastern Daylight Time", "+11:00" }, 2508b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 2509b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 25108393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10", "+10:00" }, 2511b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "Australian Eastern Standard Time", "+10:00" }, 251254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "Sydney Time", "Australia/Sydney" }, 2513b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "Eastern Australia Time", "Australia/Sydney" }, 251454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "VVVV", "Sydney Time", "Australia/Sydney" }, 2515b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2516b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 2517b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 25188393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11", "+11:00" }, 2519b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "Australian Eastern Daylight Time", "+11:00" }, 2520b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 2521b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 25228393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10", "+10:00" }, 2523b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "Australian Eastern Standard Time", "+10:00" }, 252454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "Sydney Time", "Australia/Sydney" }, 2525b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "Eastern Australia Time", "Australia/Sydney" }, 252654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "VVVV", "Sydney Time", "Australia/Sydney" }, 2527b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2528b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 2529b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT", "+0:00" }, 2530b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT", "+0:00" }, 2531b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "Greenwich Mean Time", "+0:00" }, 2532b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 2533b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" }, 25348393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "en", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+1", "Europe/London" }, 2535b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "British Summer Time", "Europe/London" }, 2536b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu en.txt has exemplar city for this time zone 2537b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "v", "United Kingdom Time", "Europe/London" }, 2538b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "United Kingdom Time", "Europe/London" }, 2539b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "VVVV", "United Kingdom Time", "Europe/London" }, 2540b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2541b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2542b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 25438393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 2544b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2545b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2546b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 25478393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 2548b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 25498393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-3", "-3:00" }, 2550b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00" }, 2551b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2552b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // JB#5150 2553b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 2554b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 25558393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+5:30", "+5:30" }, 2556b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "India Standard Time", "+5:30" }, 2557b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 2558b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 25598393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+5:30", "+05:30" }, 2560b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "India Standard Time", "+5:30" }, 2561b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "India Time", "Asia/Calcutta" }, 2562b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "India Standard Time", "Asia/Calcutta" }, 256350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 25648393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // Proper CLDR primary zone support #9733 25658393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "en", "Asia/Shanghai", "2013-01-01T00:00:00Z", "VVVV", "China Time", "Asia/Shanghai" }, 25668393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "en", "Asia/Harbin", "2013-01-01T00:00:00Z", "VVVV", "Harbin Time", "Asia/Harbin" }, 25678393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 2568b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // ========== 2569b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2570b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 2571b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00", "-8:00" }, 257254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius // BEGIN android-change 257354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "PST", "-8:00" }, 257454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "Nordamerikanische Westk\\u00fcsten-Normalzeit", "-8:00" }, 2575b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 2576b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" }, 257754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "PDT", "-7:00" }, 2578b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "Nordamerikanische Westk\\u00fcsten-Sommerzeit", "-7:00" }, 257954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "PT", "America/Los_Angeles" }, 2580b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "Nordamerikanische Westk\\u00fcstenzeit", "America/Los_Angeles" }, 25818393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // END android-change 2582b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2583b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2584b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 25858393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 258654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "Argentinische Normalzeit", "-3:00" }, 2587b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2588b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 25898393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 259054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "Argentinische Normalzeit", "-3:00" }, 259154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Buenos Aires Zeit", "America/Buenos_Aires" }, 259254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Argentinische Normalzeit", "America/Buenos_Aires" }, 2593b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2594b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2595b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 25968393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 259754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "Argentinische Normalzeit", "-3:00" }, 2598b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2599b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 26008393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 260154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "Argentinische Normalzeit", "-3:00" }, 260254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Buenos Aires Zeit", "America/Buenos_Aires" }, 260354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Argentinische Normalzeit", "America/Buenos_Aires" }, 2604b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2605b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 2606b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "-5:00" }, 26078393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "de", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-5", "-5:00" }, 260854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "de", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "Kubanische Normalzeit", "-5:00" }, 2609b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 2610b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "-4:00" }, 26118393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "de", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-4", "-4:00" }, 261254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "de", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "Kubanische Sommerzeit", "-4:00" }, 2613b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "America/Havana", "2004-07-15T00:00:00Z", "v", "Kuba Zeit", "America/Havana" }, 261454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "de", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "Kubanische Zeit", "America/Havana" }, 2615b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // added to test proper fallback of country name 2616b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de_CH", "America/Havana", "2004-07-15T00:00:00Z", "v", "Kuba Zeit", "America/Havana" }, 261754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "de_CH", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "Kubanische Zeit", "America/Havana" }, 2618b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2619b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 2620b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 26218393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11", "+11:00" }, 2622b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "Ostaustralische Sommerzeit", "+11:00" }, 2623b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 2624b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 26258393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10", "+10:00" }, 262654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "Ostaustralische Normalzeit", "+10:00" }, 262754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "Sydney Zeit", "Australia/Sydney" }, 2628b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "Ostaustralische Zeit", "Australia/Sydney" }, 2629b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2630b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 2631b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 26328393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11", "+11:00" }, 2633b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "Ostaustralische Sommerzeit", "+11:00" }, 2634b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 2635b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 26368393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10", "+10:00" }, 263754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "Ostaustralische Normalzeit", "+10:00" }, 263854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "Sydney Zeit", "Australia/Sydney" }, 2639b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "Ostaustralische Zeit", "Australia/Sydney" }, 2640b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2641b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 2642b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT", "+0:00" }, 2643b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT", "+0:00" }, 2644b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "Mittlere Greenwich-Zeit", "+0:00" }, 2645b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 2646b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" }, 26478393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "de", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+1", "+1:00" }, 264854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "de", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "Britische Sommerzeit", "+1:00" }, 2649b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Europe/London", "2004-07-15T00:00:00Z", "v", "Vereinigtes K\\u00f6nigreich Zeit", "Europe/London" }, 2650b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "Vereinigtes K\\u00f6nigreich Zeit", "Europe/London" }, 2651b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2652b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2653b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 26548393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 2655b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2656b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2657b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 26588393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 2659b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 26608393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-3", "-3:00" }, 2661b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00" }, 2662b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2663b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // JB#5150 2664b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 2665b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 26668393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+5:30", "+5:30" }, 2667b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "Indische Zeit", "+5:30" }, 2668b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 2669b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 26708393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+5:30", "+05:30" }, 2671b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "Indische Zeit", "+5:30" }, 2672b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "Indien Zeit", "Asia/Calcutta" }, 2673b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "Indische Zeit", "Asia/Calcutta" }, 2674b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2675b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // ========== 2676b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2677b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 26788393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-0800", "-8:00" }, 267954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius // BEGIN android-change 26808393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "PST", "America/Los_Angeles" }, 268154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "\\u5317\\u7f8e\\u592a\\u5e73\\u6d0b\\u6807\\u51c6\\u65f6\\u95f4", "America/Los_Angeles" }, 2682b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 26838393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-0700", "-7:00" }, 26848393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "PDT", "America/Los_Angeles" }, 26858393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "\\u5317\\u7f8e\\u592a\\u5e73\\u6d0b\\u590f\\u4ee4\\u65f6\\u95f4", "America/Los_Angeles" }, 2686b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu zh.txt has exemplar city for this time zone 26878393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "PT", "America/Los_Angeles" }, 268854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\\u5317\\u7f8e\\u592a\\u5e73\\u6d0b\\u65f6\\u95f4", "America/Los_Angeles" }, 26898393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // END android-change 2690b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2691b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2692103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-0300", "-3:00" }, 26938393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 269485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u963f\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "-3:00" }, 2695b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2696103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-0300", "-3:00" }, 26978393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 269885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u963f\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "-3:00" }, 269954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u5E03\\u5B9C\\u8BFA\\u65AF\\u827E\\u5229\\u65AF\\u65F6\\u95F4", "America/Buenos_Aires" }, 270085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u963f\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "America/Buenos_Aires" }, 2701b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2702b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2703103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-0300", "-3:00" }, 27048393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 270585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u963f\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "-3:00" }, 2706b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2707103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-0300", "-3:00" }, 27088393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 270985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u963f\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "-3:00" }, 271054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u5E03\\u5B9C\\u8BFA\\u65AF\\u827E\\u5229\\u65AF\\u65F6\\u95F4", "America/Buenos_Aires" }, 271185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u963f\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "America/Buenos_Aires" }, 2712b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2713b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 2714103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zh", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-0500", "-5:00" }, 27158393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "zh", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-5", "-5:00" }, 271685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "\\u53e4\\u5df4\\u6807\\u51c6\\u65f6\\u95f4", "-5:00" }, 2717b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 2718103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zh", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-0400", "-4:00" }, 27198393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "zh", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-4", "-4:00" }, 272085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "\\u53e4\\u5df4\\u590f\\u4ee4\\u65f6\\u95f4", "-4:00" }, 272185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-07-15T00:00:00Z", "v", "\\u53e4\\u5df4\\u65f6\\u95f4", "America/Havana" }, 272285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\\u53e4\\u5df4\\u65f6\\u95f4", "America/Havana" }, 2723b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2724b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 2725103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+1100", "+11:00" }, 27268393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11", "+11:00" }, 2727b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "\\u6fb3\\u5927\\u5229\\u4e9a\\u4e1c\\u90e8\\u590f\\u4ee4\\u65f6\\u95f4", "+11:00" }, 2728b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 2729103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+1000", "+10:00" }, 27308393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10", "+10:00" }, 273185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "\\u6fb3\\u5927\\u5229\\u4e9a\\u4e1c\\u90e8\\u6807\\u51c6\\u65f6\\u95f4", "+10:00" }, 2732b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu zh.txt does not have info for this time zone 273354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\\u6089\\u5C3C\\u65F6\\u95F4", "Australia/Sydney" }, 273485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\\u6fb3\\u5927\\u5229\\u4e9a\\u4e1c\\u90e8\\u65f6\\u95f4", "Australia/Sydney" }, 2735b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2736b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 2737103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+1100", "+11:00" }, 27388393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11", "+11:00" }, 2739b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "\\u6fb3\\u5927\\u5229\\u4e9a\\u4e1c\\u90e8\\u590f\\u4ee4\\u65f6\\u95f4", "+11:00" }, 2740b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 2741103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+1000", "+10:00" }, 27428393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10", "+10:00" }, 274385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "\\u6fb3\\u5927\\u5229\\u4e9a\\u4e1c\\u90e8\\u6807\\u51c6\\u65f6\\u95f4", "+10:00" }, 274454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\\u6089\\u5C3C\\u65F6\\u95F4", "Australia/Sydney" }, 274585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\\u6fb3\\u5927\\u5229\\u4e9a\\u4e1c\\u90e8\\u65f6\\u95f4", "Australia/Sydney" }, 2746b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2747b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 2748103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zh", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT", "+0:00" }, 274954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "zh", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT", "+0:00" }, 2750103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zh", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT", "+0:00" }, 275154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "zh", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT", "+0:00" }, 2752b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "\\u683C\\u6797\\u5C3C\\u6CBB\\u6807\\u51C6\\u65F6\\u95F4", "+0:00" }, 2753b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 2754103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zh", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+0100", "+1:00" }, 27558393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "zh", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+1", "+1:00" }, 275654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "zh", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "\\u82f1\\u56fd\\u590f\\u4ee4\\u65f6\\u95f4", "+1:00" }, 275785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Europe/London", "2004-07-15T00:00:00Z", "v", "\\u82f1\\u56fd\\u65f6\\u95f4", "Europe/London" }, 275885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\\u82f1\\u56fd\\u65f6\\u95f4", "Europe/London" }, 275985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Europe/London", "2004-07-15T00:00:00Z", "VVVV", "\\u82f1\\u56fd\\u65f6\\u95f4", "Europe/London" }, 2760b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2761b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2762103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-0300", "-3:00" }, 27638393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 2764103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-0300", "-3:00" }, 2765b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2766103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-0300", "-3:00" }, 27678393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 2768103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-0300", "-3:00" }, 27698393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-3", "-3:00" }, 2770103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-0300", "-3:00" }, 2771b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2772b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // JB#5150 2773b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 2774103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+0530", "+5:30" }, 27758393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+530", "+5:30" }, 277654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "\\u5370\\u5ea6\\u65f6\\u95f4", "+5:30" }, 2777b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 2778103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+0530", "+5:30" }, 27798393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+530", "+05:30" }, 278054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "\\u5370\\u5ea6\\u65f6\\u95f4", "+5:30" }, 278185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "\\u5370\\u5ea6\\u65f6\\u95f4", "Asia/Calcutta" }, 278254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\\u5370\\u5ea6\\u65f6\\u95f4", "Asia/Calcutta" }, 2783b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 27848393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // Proper CLDR primary zone support #9733 27858393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "zh", "Asia/Shanghai", "2013-01-01T00:00:00Z", "VVVV", "\\u4e2d\\u56fd\\u65f6\\u95f4", "Asia/Shanghai" }, 27868393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "zh", "Asia/Harbin", "2013-01-01T00:00:00Z", "VVVV", "\\u54c8\\u5c14\\u6ee8\\u65f6\\u95f4", "Asia/Harbin" }, 27878393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius 2788b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // ========== 2789b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2790b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 2791103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00", "-8:00" }, 27928393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // BEGIN android-change 27938393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "PST", "-8:00" }, 2794b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "\\u092a\\u094d\\u0930\\u0936\\u093e\\u0902\\u0924\\u0020\\u092e\\u093e\\u0928\\u0915\\u0020\\u0938\\u092e\\u092f", "-8:00" }, 2795b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 2796103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" }, 27978393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "PDT", "-7:00" }, 2798b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "\\u092A\\u094D\\u0930\\u0936\\u093E\\u0902\\u0924 \\u0926\\u093F\\u0935\\u093E\\u0935\\u0932\\u094B\\u0915 \\u0938\\u092E\\u092F", "-7:00" }, 27998393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "PT", "America/Los_Angeles" }, 2800b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\\u092A\\u094D\\u0930\\u0936\\u093E\\u0902\\u0924 \\u0938\\u092E\\u092F", "America/Los_Angeles" }, 28018393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // END android-change 2802b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2803b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2804103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 28058393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 2806103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u0905\\u0930\\u094D\\u091C\\u0947\\u0902\\u091F\\u0940\\u0928\\u093E \\u092E\\u093E\\u0928\\u0915 \\u0938\\u092E\\u092F", "-3:00" }, 2807b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2808103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 28098393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 2810103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u0905\\u0930\\u094D\\u091C\\u0947\\u0902\\u091F\\u0940\\u0928\\u093E \\u092E\\u093E\\u0928\\u0915 \\u0938\\u092E\\u092F", "-3:00" }, 281154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u092C\\u094D\\u092F\\u0942\\u0928\\u0938 \\u0906\\u092F\\u0930\\u0938 \\u0938\\u092E\\u092F", "America/Buenos_Aires" }, 2812103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u0905\\u0930\\u094D\\u091C\\u0947\\u0902\\u091F\\u0940\\u0928\\u093E \\u092E\\u093E\\u0928\\u0915 \\u0938\\u092E\\u092F", "America/Buenos_Aires" }, 2813b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2814b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2815103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 28168393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 2817103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u0905\\u0930\\u094D\\u091C\\u0947\\u0902\\u091F\\u0940\\u0928\\u093E \\u092E\\u093E\\u0928\\u0915 \\u0938\\u092E\\u092F", "-3:00" }, 2818b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2819103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 28208393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 2821103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u0905\\u0930\\u094D\\u091C\\u0947\\u0902\\u091F\\u0940\\u0928\\u093E \\u092E\\u093E\\u0928\\u0915 \\u0938\\u092E\\u092F", "-3:00" }, 282254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u092C\\u094D\\u092F\\u0942\\u0928\\u0938 \\u0906\\u092F\\u0930\\u0938 \\u0938\\u092E\\u092F", "America/Buenos_Aires" }, 2823103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u0905\\u0930\\u094D\\u091C\\u0947\\u0902\\u091F\\u0940\\u0928\\u093E \\u092E\\u093E\\u0928\\u0915 \\u0938\\u092E\\u092F", "America/Buenos_Aires" }, 2824b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2825b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 2826103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "hi", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "-5:00" }, 28278393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "hi", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-5", "-5:00" }, 282854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "hi", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "\\u0915\\u094d\\u092f\\u0942\\u092c\\u093e \\u0915\\u093e \\u092e\\u093e\\u0928\\u0915 \\u0938\\u092e\\u092f", "-5:00" }, 2829b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 2830103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "hi", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "-4:00" }, 28318393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "hi", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-4", "-4:00" }, 283254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "hi", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "\\u0915\\u094d\\u092f\\u0942\\u092c\\u093e \\u0915\\u093e \\u0921\\u0947\\u0932\\u093e\\u0907\\u091f \\u091f\\u093e\\u0907\\u092e", "-4:00" }, 2833b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "America/Havana", "2004-07-15T00:00:00Z", "v", "\\u0915\\u094d\\u092f\\u0942\\u092c\\u093e \\u0938\\u092E\\u092F", "America/Havana" }, 283454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "hi", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\\u0915\\u094d\\u092f\\u0942\\u092c\\u093e \\u0915\\u093e \\u0938\\u092E\\u092F", "America/Havana" }, 2835b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2836b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 2837103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 28388393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11", "+11:00" }, 2839b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "\\u0911\\u0938\\u094D\\u200D\\u091F\\u094D\\u0930\\u0947\\u0932\\u093F\\u092F\\u093E\\u0908 \\u092A\\u0942\\u0930\\u094D\\u0935\\u0940 \\u0926\\u093F\\u0935\\u093E\\u0935\\u0932\\u094B\\u0915 \\u0938\\u092E\\u092F", "+11:00" }, 2840b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 2841103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 28428393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10", "+10:00" }, 2843b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "\\u0911\\u0938\\u094D\\u200D\\u091F\\u094D\\u0930\\u0947\\u0932\\u093F\\u092F\\u093E\\u0908 \\u092A\\u0942\\u0930\\u094D\\u0935\\u0940 \\u092E\\u093E\\u0928\\u0915 \\u0938\\u092E\\u092F", "+10:00" }, 284454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\\u0938\\u093F\\u0921\\u0928\\u0940 \\u0938\\u092E\\u092F", "Australia/Sydney" }, 2845b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\\u092A\\u0942\\u0930\\u094D\\u0935\\u0940 \\u0911\\u0938\\u094D\\u091F\\u094D\\u0930\\u0947\\u0932\\u093F\\u092F\\u093E\\u0908 \\u0938\\u092E\\u092F", "Australia/Sydney" }, 2846b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2847b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 2848103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 28498393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11", "+11:00" }, 2850b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "\\u0911\\u0938\\u094D\\u200D\\u091F\\u094D\\u0930\\u0947\\u0932\\u093F\\u092F\\u093E\\u0908 \\u092A\\u0942\\u0930\\u094D\\u0935\\u0940 \\u0926\\u093F\\u0935\\u093E\\u0935\\u0932\\u094B\\u0915 \\u0938\\u092E\\u092F", "+11:00" }, 2851b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 2852103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 28538393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10", "+10:00" }, 2854b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "\\u0911\\u0938\\u094D\\u200D\\u091F\\u094D\\u0930\\u0947\\u0932\\u093F\\u092F\\u093E\\u0908 \\u092A\\u0942\\u0930\\u094D\\u0935\\u0940 \\u092E\\u093E\\u0928\\u0915 \\u0938\\u092E\\u092F", "+10:00" }, 285554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\\u0938\\u093F\\u0921\\u0928\\u0940 \\u0938\\u092E\\u092F", "Australia/Sydney" }, 2856b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\\u092A\\u0942\\u0930\\u094D\\u0935\\u0940 \\u0911\\u0938\\u094D\\u091F\\u094D\\u0930\\u0947\\u0932\\u093F\\u092F\\u093E\\u0908 \\u0938\\u092E\\u092F", "Australia/Sydney" }, 2857b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2858b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 2859b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT", "+0:00" }, 2860b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT", "+0:00" }, 286154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "hi", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "\\u0917\\u094d\\u0930\\u0940\\u0928\\u0935\\u093f\\u091a \\u092e\\u0940\\u0928 \\u091f\\u093e\\u0907\\u092e", "+0:00" }, 2862b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 2863103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "hi", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" }, 28648393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "hi", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+1", "+1:00" }, 2865103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "hi", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+01:00", "+1:00" }, 28668393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "hi", "Europe/London", "2004-07-15T00:00:00Z", "v", "\\u092C\\u094D\\u0930\\u093F\\u091F\\u0947\\u0928 \\u0938\\u092E\\u092F", "Europe/London" }, 28678393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "hi", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\\u092C\\u094D\\u0930\\u093F\\u091F\\u0947\\u0928 \\u0938\\u092E\\u092F", "Europe/London" }, 2868b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2869b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2870103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 28718393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 2872103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2873b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2874103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 28758393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 2876103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 28778393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-3", "-3:00" }, 2878103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00" }, 2879b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2880b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 2881103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 2882b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "IST", "+5:30" }, 2883b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "\\u092D\\u093E\\u0930\\u0924\\u0940\\u092F \\u0938\\u092E\\u092F", "+5:30" }, 2884b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 2885103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 2886b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "IST", "+05:30" }, 2887b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "\\u092D\\u093E\\u0930\\u0924\\u0940\\u092F \\u0938\\u092E\\u092F", "+5:30" }, 2888b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "IST", "Asia/Calcutta" }, 2889b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\\u092D\\u093E\\u0930\\u0924\\u0940\\u092F \\u0938\\u092E\\u092F", "Asia/Calcutta" }, 2890b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2891b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // ========== 2892b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2893b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 289485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0800", "-8:00" }, 289554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius // BEGIN android-change 289654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "PST", "America/Los_Angeles" }, 28978393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "V", "uslax", "America/Los_Angeles" }, 2898b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "\\u0422\\u0438\\u0445\\u043E\\u043E\\u043A\\u0435\\u0430\\u043D\\u0441\\u043A\\u0430 \\u0447\\u0430\\u0441\\u043E\\u0432\\u0430 \\u0437\\u043E\\u043D\\u0430", "America/Los_Angeles" }, 2899b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 290085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0700", "-7:00" }, 290154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "PDT", "America/Los_Angeles" }, 29028393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "V", "uslax", "America/Los_Angeles" }, 2903b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "\\u0422\\u0438\\u0445\\u043E\\u043E\\u043A\\u0435\\u0430\\u043D\\u0441\\u043A\\u0430 \\u043B\\u044F\\u0442\\u043D\\u0430 \\u0447\\u0430\\u0441\\u043E\\u0432\\u0430 \\u0437\\u043E\\u043D\\u0430", "America/Los_Angeles" }, 2904b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu bg.txt has exemplar city for this time zone 29058393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "PT", "America/Los_Angeles" }, 2906b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\\u0422\\u0438\\u0445\\u043E\\u043E\\u043A\\u0435\\u0430\\u043D\\u0441\\u043A\\u043E \\u0432\\u0440\\u0435\\u043C\\u0435", "America/Los_Angeles" }, 290754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "VVVV", "\\u041B\\u043E\\u0441 \\u0410\\u043D\\u0436\\u0435\\u043B\\u0438\\u0441 \\u0432\\u0440\\u0435\\u043C\\u0435", "America/Los_Angeles" }, 29088393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // END android-change 2909b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2910b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 291185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 29128393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-3", "-3:00" }, 291354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u0410\\u0440\\u0436\\u0435\\u043D\\u0442\\u0438\\u043D\\u0430 \\u2013 \\u0441\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u043e \\u0432\\u0440\\u0435\\u043c\\u0435", "-3:00" }, 2914b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 291585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 29168393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-3", "-3:00" }, 291754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u0410\\u0440\\u0436\\u0435\\u043D\\u0442\\u0438\\u043D\\u0430 \\u2013 \\u0441\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u043e \\u0432\\u0440\\u0435\\u043c\\u0435", "-3:00" }, 291854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u0411\\u0443\\u0435\\u043D\\u043E\\u0441 \\u0410\\u0439\\u0440\\u0435\\u0441 \\u0432\\u0440\\u0435\\u043C\\u0435", "America/Buenos_Aires" }, 291954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u0410\\u0440\\u0436\\u0435\\u043D\\u0442\\u0438\\u043D\\u0430 \\u2013 \\u0441\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u043e \\u0432\\u0440\\u0435\\u043c\\u0435", "America/Buenos_Aires" }, 2920b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2921b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 292285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 29238393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-3", "-3:00" }, 292454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u0410\\u0440\\u0436\\u0435\\u043D\\u0442\\u0438\\u043D\\u0430 \\u2013 \\u0441\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u043e \\u0432\\u0440\\u0435\\u043c\\u0435", "-3:00" }, 2925b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 292685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 29278393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-3", "-3:00" }, 292854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u0410\\u0440\\u0436\\u0435\\u043D\\u0442\\u0438\\u043D\\u0430 \\u2013 \\u0441\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u043e \\u0432\\u0440\\u0435\\u043c\\u0435", "-3:00" }, 2929b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu bg.txt does not have info for this time zone 293054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u0411\\u0443\\u0435\\u043D\\u043E\\u0441 \\u0410\\u0439\\u0440\\u0435\\u0441 \\u0432\\u0440\\u0435\\u043C\\u0435", "America/Buenos_Aires" }, 293154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u0410\\u0440\\u0436\\u0435\\u043D\\u0442\\u0438\\u043D\\u0430 \\u2013 \\u0441\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u043e \\u0432\\u0440\\u0435\\u043c\\u0435", "America/Buenos_Aires" }, 2932b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2933b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 293485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0500", "-5:00" }, 29358393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "bg", "America/Havana", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-5", "-5:00" }, 293654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "bg", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "\\u041a\\u0443\\u0431\\u0438\\u043d\\u0441\\u043a\\u043e \\u0441\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u043e \\u0432\\u0440\\u0435\\u043c\\u0435", "-5:00" }, 2937b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 293885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0400", "-4:00" }, 29398393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "bg", "America/Havana", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-4", "-4:00" }, 294054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "bg", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "\\u041a\\u0443\\u0431\\u0438\\u043d\\u0441\\u043a\\u043e \\u043b\\u044f\\u0442\\u043d\\u043e \\u0447\\u0430\\u0441\\u043e\\u0432\\u043e \\u0432\\u0440\\u0435\\u043c\\u0435", "-4:00" }, 2941b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "America/Havana", "2004-07-15T00:00:00Z", "v", "\\u041a\\u0443\\u0431\\u0430 \\u0432\\u0440\\u0435\\u043C\\u0435", "America/Havana" }, 294254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "bg", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\\u041a\\u0443\\u0431\\u0438\\u043d\\u0441\\u043a\\u043e \\u0432\\u0440\\u0435\\u043C\\u0435", "America/Havana" }, 2943b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2944b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 294585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1100", "+11:00" }, 29468393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+11", "+11:00" }, 2947b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "\\u0410\\u0432\\u0441\\u0442\\u0440\\u0430\\u043B\\u0438\\u044F \\u2013 \\u0438\\u0437\\u0442\\u043E\\u0447\\u043D\\u043E \\u043B\\u044F\\u0442\\u043D\\u043E \\u0447\\u0430\\u0441\\u043E\\u0432\\u043E \\u0432\\u0440\\u0435\\u043C\\u0435", "+11:00" }, 2948b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 294985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1000", "+10:00" }, 29508393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+10", "+10:00" }, 2951b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "\\u0410\\u0432\\u0441\\u0442\\u0440\\u0430\\u043B\\u0438\\u044F \\u2013 \\u0438\\u0437\\u0442\\u043E\\u0447\\u043D\\u043E \\u0441\\u0442\\u0430\\u043D\\u0434\\u0430\\u0440\\u0442\\u043D\\u043E \\u0432\\u0440\\u0435\\u043C\\u0435", "+10:00" }, 295254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\\u0421\\u0438\\u0434\\u043D\\u0438 \\u0432\\u0440\\u0435\\u043C\\u0435", "Australia/Sydney" }, 2953b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\\u0410\\u0432\\u0441\\u0442\\u0440\\u0430\\u043B\\u0438\\u044F \\u2013 \\u0438\\u0437\\u0442\\u043E\\u0447\\u043D\\u043E \\u0432\\u0440\\u0435\\u043C\\u0435", "Australia/Sydney" }, 2954b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2955b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 295685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1100", "+11:00" }, 29578393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+11", "+11:00" }, 2958b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "\\u0410\\u0432\\u0441\\u0442\\u0440\\u0430\\u043B\\u0438\\u044F \\u2013 \\u0438\\u0437\\u0442\\u043E\\u0447\\u043D\\u043E \\u043B\\u044F\\u0442\\u043D\\u043E \\u0447\\u0430\\u0441\\u043E\\u0432\\u043E \\u0432\\u0440\\u0435\\u043C\\u0435", "+11:00" }, 2959b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 296085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1000", "+10:00" }, 29618393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+10", "+10:00" }, 2962b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "\\u0410\\u0432\\u0441\\u0442\\u0440\\u0430\\u043B\\u0438\\u044F \\u2013 \\u0438\\u0437\\u0442\\u043E\\u0447\\u043D\\u043E \\u0441\\u0442\\u0430\\u043D\\u0434\\u0430\\u0440\\u0442\\u043D\\u043E \\u0432\\u0440\\u0435\\u043C\\u0435", "+10:00" }, 296354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\\u0421\\u0438\\u0434\\u043D\\u0438 \\u0432\\u0440\\u0435\\u043C\\u0435", "Australia/Sydney" }, 2964b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\\u0410\\u0432\\u0441\\u0442\\u0440\\u0430\\u043B\\u0438\\u044F \\u2013 \\u0438\\u0437\\u0442\\u043E\\u0447\\u043D\\u043E \\u0432\\u0440\\u0435\\u043C\\u0435", "Australia/Sydney" }, 2965b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2966b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 2967b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447", "+0:00" }, 296854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "bg", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT", "+0:00" }, 2969b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "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" }, 2970b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 297185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0100", "+1:00" }, 29728393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "bg", "Europe/London", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1", "+1:00" }, 297385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0100", "+1:00" }, 2974b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "Europe/London", "2004-07-15T00:00:00Z", "v", "\\u041e\\u0431\\u0435\\u0434\\u0438\\u043d\\u0435\\u043d\\u043e \\u043a\\u0440\\u0430\\u043b\\u0441\\u0442\\u0432\\u043e \\u0432\\u0440\\u0435\\u043C\\u0435", "Europe/London" }, 2975b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\\u041e\\u0431\\u0435\\u0434\\u0438\\u043d\\u0435\\u043d\\u043e \\u043a\\u0440\\u0430\\u043b\\u0441\\u0442\\u0432\\u043e \\u0432\\u0440\\u0435\\u043C\\u0435", "Europe/London" }, 2976b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2977b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 297885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 29798393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-3", "-3:00" }, 298085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 2981b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 298285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 29838393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-3", "-3:00" }, 298485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 29858393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-3", "-3:00" }, 298685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 2987b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2988b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // JB#5150 2989b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 299085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0530", "+5:30" }, 29918393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+530", "+5:30" }, 299254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "\\u0418\\u043d\\u0434\\u0438\\u0439\\u0441\\u043a\\u043e \\u0441\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u043e \\u0432\\u0440\\u0435\\u043c\\u0435", "+5:30" }, 2993b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 299485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0530", "+5:30" }, 29958393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+530", "+05:30" }, 299654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "\\u0418\\u043d\\u0434\\u0438\\u0439\\u0441\\u043a\\u043e \\u0441\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u043e \\u0432\\u0440\\u0435\\u043c\\u0435", "+5:30" }, 2997b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "\\u0418\\u043D\\u0434\\u0438\\u044F \\u0432\\u0440\\u0435\\u043C\\u0435", "Asia/Calcutta" }, 299854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\\u0418\\u043d\\u0434\\u0438\\u0439\\u0441\\u043a\\u043e \\u0441\\u0442\\u0430\\u043d\\u0434\\u0430\\u0440\\u0442\\u043d\\u043e \\u0432\\u0440\\u0435\\u043c\\u0435", "Asia/Calcutta" }, 2999b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // ========== 3000b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3001b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 300285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00", "-8:00" }, 30038393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // BEGIN android-change 30048393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "PST", "America/Los_Angeles" }, 300585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "\\u30a2\\u30e1\\u30ea\\u30ab\\u592a\\u5e73\\u6d0b\\u6a19\\u6e96\\u6642", "America/Los_Angeles" }, 300685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-700" }, 300785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" }, 30088393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "PDT", "America/Los_Angeles" }, 300985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "\\u30a2\\u30e1\\u30ea\\u30ab\\u592a\\u5e73\\u6d0b\\u590f\\u6642\\u9593", "America/Los_Angeles" }, 3010b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu ja.txt has exemplar city for this time zone 30118393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "PT", "America/Los_Angeles" }, 301285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\\u30A2\\u30E1\\u30EA\\u30AB\\u592A\\u5e73\\u6D0B\\u6642\\u9593", "America/Los_Angeles" }, 301354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "VVVV", "\\u30ED\\u30B5\\u30F3\\u30BC\\u30EB\\u30B9\\u6642\\u9593", "America/Los_Angeles" }, 30148393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // END Android-change 3015b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3016b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 301785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 30188393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 3019b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u30A2\\u30EB\\u30BC\\u30F3\\u30C1\\u30F3\\u6A19\\u6E96\\u6642", "-3:00" }, 3020b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 302185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 30228393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 3023b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u30A2\\u30EB\\u30BC\\u30F3\\u30C1\\u30F3\\u6A19\\u6E96\\u6642", "-3:00" }, 3024b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu ja.txt does not have info for this time zone 302554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u30D6\\u30A8\\u30CE\\u30B9\\u30A2\\u30A4\\u30EC\\u30B9\\u6642\\u9593", "America/Buenos_Aires" }, 3026b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u30A2\\u30EB\\u30BC\\u30F3\\u30C1\\u30F3\\u6A19\\u6E96\\u6642", "America/Buenos_Aires" }, 3027b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3028b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 302985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 30308393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 3031b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u30A2\\u30EB\\u30BC\\u30F3\\u30C1\\u30F3\\u6A19\\u6E96\\u6642", "-3:00" }, 3032b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 303385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 30348393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 3035b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u30A2\\u30EB\\u30BC\\u30F3\\u30C1\\u30F3\\u6A19\\u6E96\\u6642", "-3:00" }, 303654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u30D6\\u30A8\\u30CE\\u30B9\\u30A2\\u30A4\\u30EC\\u30B9\\u6642\\u9593", "America/Buenos_Aires" }, 3037b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u30A2\\u30EB\\u30BC\\u30F3\\u30C1\\u30F3\\u6A19\\u6E96\\u6642", "America/Buenos_Aires" }, 3038b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3039b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 304085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "-5:00" }, 30418393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ja", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-5", "-5:00" }, 3042b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "\\u30AD\\u30E5\\u30FC\\u30D0\\u6A19\\u6E96\\u6642", "-5:00" }, 3043b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 304485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "-4:00" }, 30458393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ja", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-4", "-4:00" }, 3046b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "\\u30AD\\u30E5\\u30FC\\u30D0\\u590F\\u6642\\u9593", "-4:00" }, 3047b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Havana", "2004-07-15T00:00:00Z", "v", "\\u30ad\\u30e5\\u30fc\\u30d0\\u6642\\u9593", "America/Havana" }, 3048b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\\u30ad\\u30e5\\u30fc\\u30d0\\u6642\\u9593", "America/Havana" }, 3049b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3050b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 305185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 30528393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11", "+11:00" }, 3053b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "\\u30AA\\u30FC\\u30B9\\u30C8\\u30E9\\u30EA\\u30A2\\u6771\\u90E8\\u590F\\u6642\\u9593", "+11:00" }, 3054b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 305585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 30568393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10", "+10:00" }, 3057b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "\\u30AA\\u30FC\\u30B9\\u30C8\\u30E9\\u30EA\\u30A2\\u6771\\u90E8\\u6A19\\u6E96\\u6642", "+10:00" }, 3058b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu ja.txt does not have info for this time zone 305954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\\u30B7\\u30C9\\u30CB\\u30FC\\u6642\\u9593", "Australia/Sydney" }, 3060b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\\u30AA\\u30FC\\u30B9\\u30C8\\u30E9\\u30EA\\u30A2\\u6771\\u90E8\\u6642\\u9593", "Australia/Sydney" }, 3061b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3062b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 306385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 30648393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11", "+11:00" }, 3065b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "\\u30AA\\u30FC\\u30B9\\u30C8\\u30E9\\u30EA\\u30A2\\u6771\\u90E8\\u590F\\u6642\\u9593", "+11:00" }, 3066b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 306785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 30688393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10", "+10:00" }, 3069b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "\\u30AA\\u30FC\\u30B9\\u30C8\\u30E9\\u30EA\\u30A2\\u6771\\u90E8\\u6A19\\u6E96\\u6642", "+10:00" }, 307054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\\u30B7\\u30C9\\u30CB\\u30FC\\u6642\\u9593", "Australia/Sydney" }, 3071b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\\u30AA\\u30FC\\u30B9\\u30C8\\u30E9\\u30EA\\u30A2\\u6771\\u90E8\\u6642\\u9593", "Australia/Sydney" }, 3072b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3073b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 3074b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT", "+0:00" }, 3075b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT", "+0:00" }, 3076b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "\\u30B0\\u30EA\\u30CB\\u30C3\\u30B8\\u6A19\\u6E96\\u6642", "+0:00" }, 3077b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 307885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" }, 30798393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ja", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+1", "+1:00" }, 308054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "ja", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "\\u82f1\\u56fd\\u590f\\u6642\\u9593", "+1:00" }, 3081b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Europe/London", "2004-07-15T00:00:00Z", "v", "\\u30a4\\u30ae\\u30ea\\u30b9\\u6642\\u9593", "Europe/London" }, 3082b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\\u30a4\\u30ae\\u30ea\\u30b9\\u6642\\u9593", "Europe/London" }, 3083b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Europe/London", "2004-07-15T00:00:00Z", "VVVV", "\\u30a4\\u30ae\\u30ea\\u30b9\\u6642\\u9593", "Europe/London" }, 3084b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3085b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 308685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 30878393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 308885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 3089b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 309085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 30918393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 309285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 30938393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-3", "-3:00" }, 309485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00" }, 3095b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3096b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // JB#5150 3097b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 309885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 30998393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+5:30", "+5:30" }, 310054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "\\u30A4\\u30F3\\u30C9\\u6642\\u9593", "+5:30" }, 3101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 310285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 31038393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+5:30", "+05:30" }, 310454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "\\u30A4\\u30F3\\u30C9\\u6642\\u9593", "+5:30" }, 3105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "\\u30A4\\u30F3\\u30C9\\u6642\\u9593", "Asia/Calcutta" }, 310654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\\u30A4\\u30F3\\u30C9\\u6642\\u9593", "Asia/Calcutta" }, 3107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // ========== 3109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3110b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 3111b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00", "-8:00" }, 31128393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // BEGIN Android-change 31138393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ti", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "PST", "-8:00" }, 3114b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "GMT-08:00", "-8:00" }, 3115b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 3116b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" }, 31178393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "PDT", "-7:00" }, 3118b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "GMT-07:00", "-7:00" }, 31198393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "PT", "America/Los_Angeles" }, 312054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "Los Angeles", "America/Los_Angeles" }, 31218393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // END Android-change 3122b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3123b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 3124b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 31258393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ti", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 3126b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 3127b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 3128b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 31298393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 3130b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 313154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Buenos Aires", "America/Buenos_Aires" }, 313254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Buenos Aires", "America/Buenos_Aires" }, 3133b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3134b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 3135b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 31368393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ti", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 3137b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 3138b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 3139b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 31408393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 3141b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 314254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Buenos Aires", "America/Buenos_Aires" }, 314354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Buenos Aires", "America/Buenos_Aires" }, 3144b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3145b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 3146b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "-5:00" }, 31478393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ti", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-5", "-5:00" }, 3148b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-05:00", "-5:00" }, 3149b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 3150b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "-4:00" }, 31518393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ti", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-4", "-4:00" }, 3152b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-04:00", "-4:00" }, 315354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "ti", "America/Havana", "2004-07-15T00:00:00Z", "v", "CU", "America/Havana" }, 315454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "ti", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "CU", "America/Havana" }, 3155b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3156b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 3157b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 31588393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ti", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11", "+11:00" }, 3159b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" }, 3160b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 3161b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 31628393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10", "+10:00" }, 3163b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" }, 316454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "Sydney", "Australia/Sydney" }, 316554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "Sydney", "Australia/Sydney" }, 3166b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3167b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 3168b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 31698393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ti", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11", "+11:00" }, 3170b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" }, 3171b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 3172b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 31738393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10", "+10:00" }, 3174b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" }, 317554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "Sydney", "Australia/Sydney" }, 317654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "Sydney", "Australia/Sydney" }, 3177b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3178b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 3179b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT", "+0:00" }, 3180b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT", "+0:00" }, 3181b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "GMT", "+0:00" }, 3182b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 3183b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" }, 31848393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ti", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+1", "+1:00" }, 3185b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+01:00", "+1:00" }, 318654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "ti", "Europe/London", "2004-07-15T00:00:00Z", "v", "GB", "Europe/London" }, 318754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "ti", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "GB", "Europe/London" }, 3188b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3189b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 3190b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 31918393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ti", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 3192b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 3193b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 3194b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 31958393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ti", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-3", "-3:00" }, 3196b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 31978393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ti", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-3", "-3:00" }, 3198b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00" }, 3199b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3200b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // JB#5150 3201b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 3202b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 32038393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ti", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+5:30", "+5:30" }, 3204b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" }, 3205b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 3206b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 32078393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+5:30", "+05:30" }, 3208b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" }, 320954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "IN", "Alna/Calcutta" }, 321054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "IN", "Asia/Calcutta" }, 3211b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3212b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // Ticket#8589 Partial location name to use country name if the zone is the golden 3213b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // zone for the time zone's country. 3214b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en_MX", "America/Chicago", "1995-07-15T00:00:00Z", "vvvv", "Central Time (United States)", "America/Chicago"}, 3215b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3216103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius // Tests proper handling of time zones that should have empty sets when inherited from the parent. 3217103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius // For example, en_GB understands CET as Central European Time, but en_HK, which inherits from en_GB 3218103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius // does not 3219103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "en_GB", "Europe/Paris", "2004-01-15T00:00:00Z", "zzzz", "Central European Standard Time", "+1:00"}, 3220103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "en_GB", "Europe/Paris", "2004-07-15T00:00:00Z", "zzzz", "Central European Summer Time", "+2:00"}, 3221103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "en_GB", "Europe/Paris", "2004-01-15T00:00:00Z", "z", "CET", "+1:00"}, 3222103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "en_GB", "Europe/Paris", "2004-07-15T00:00:00Z", "z", "CEST", "+2:00"}, 3223103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "en_HK", "Europe/Paris", "2004-01-15T00:00:00Z", "zzzz", "Central European Standard Time", "+1:00"}, 3224103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "en_HK", "Europe/Paris", "2004-07-15T00:00:00Z", "zzzz", "Central European Summer Time", "+2:00"}, 32258393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "en_HK", "Europe/Paris", "2004-01-15T00:00:00Z", "z", "GMT+1", "+1:00"}, 32268393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "en_HK", "Europe/Paris", "2004-07-15T00:00:00Z", "z", "GMT+2", "+2:00"}, 3227103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 322885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { NULL, NULL, NULL, NULL, NULL, NULL }, 3229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 3230b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 323185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UErrorCode status = U_ZERO_ERROR; 323285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Calendar *cal = GregorianCalendar::createInstance(status); 323350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (failure(status, "GregorianCalendar::createInstance", TRUE)) return; 3234b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho SimpleDateFormat testfmt(UnicodeString("yyyy-MM-dd'T'HH:mm:ss'Z'"), status); 3235b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (failure(status, "SimpleDateFormat constructor", TRUE)) return; 3236b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho testfmt.setTimeZone(*TimeZone::getGMT()); 3237b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 323885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int i = 0; fallbackTests[i][0]; i++) { 323985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho const char **testLine = fallbackTests[i]; 324085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString info[5]; 324185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for ( int j = 0 ; j < 5 ; j++ ) { 324285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho info[j] = UnicodeString(testLine[j], -1, US_INV); 324385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 324485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho info[4] = info[4].unescape(); 324585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln("%s;%s;%s;%s", testLine[0], testLine[1], testLine[2], testLine[3]); 3246b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 324785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho TimeZone *tz = TimeZone::createTimeZone(info[1]); 324885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 3249b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UDate d = testfmt.parse(testLine[2], status); 3250b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho cal->setTime(d, status); 3251b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (U_FAILURE(status)) { 3252b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho errln(UnicodeString("Failed to set date: ") + testLine[2]); 325385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 325485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 325585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho SimpleDateFormat fmt(info[3], Locale(testLine[0]),status); 325685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ASSERT_OK(status); 325785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho cal->adoptTimeZone(tz); 325885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString result; 325985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho FieldPosition pos(0); 326085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fmt.format(*cal,result,pos); 326185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (result != info[4]) { 326250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln(info[0] + ";" + info[1] + ";" + info[2] + ";" + info[3] + " expected: '" + 326385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho info[4] + "' but got: '" + result + "'"); 326485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 326585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 326685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete cal; 326785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho} 326885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 326985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hovoid DateFormatTest::TestRoundtripWithCalendar(void) { 327085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UErrorCode status = U_ZERO_ERROR; 327185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 327285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho TimeZone *tz = TimeZone::createTimeZone("Europe/Paris"); 327385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho TimeZone *gmt = TimeZone::createTimeZone("Etc/GMT"); 327485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 327585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Calendar *calendars[] = { 327685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Calendar::createInstance(*tz, Locale("und@calendar=gregorian"), status), 327785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Calendar::createInstance(*tz, Locale("und@calendar=buddhist"), status), 327885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho// Calendar::createInstance(*tz, Locale("und@calendar=hebrew"), status), 327985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Calendar::createInstance(*tz, Locale("und@calendar=islamic"), status), 328085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Calendar::createInstance(*tz, Locale("und@calendar=japanese"), status), 328185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho NULL 328285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho }; 328385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (U_FAILURE(status)) { 328450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Failed to initialize calendars: %s", u_errorName(status)); 328585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int i = 0; calendars[i] != NULL; i++) { 328685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete calendars[i]; 328785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 328885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho return; 328985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 3290b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 329185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho //FIXME The formatters commented out below are currently failing because of 329285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // the calendar calculation problem reported by #6691 329385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 329485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // The order of test formatters must match the order of calendars above. 329585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat *formatters[] = { 329685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale("en_US")), //calendar=gregorian 329785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale("th_TH")), //calendar=buddhist 329885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho// DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale("he_IL@calendar=hebrew")), 329985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale("ar_EG@calendar=islamic")), 330085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho// DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale("ja_JP@calendar=japanese")), 330185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho NULL 330285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho }; 330385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 330485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate d = Calendar::getNow(); 330585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString buf; 330685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho FieldPosition fpos; 330785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ParsePosition ppos; 330885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 330985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int i = 0; formatters[i] != NULL; i++) { 331085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho buf.remove(); 331185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fpos.setBeginIndex(0); 331285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fpos.setEndIndex(0); 331385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho calendars[i]->setTime(d, status); 331485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 331585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // Normal case output - the given calendar matches the calendar 331685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // used by the formatter 331785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho formatters[i]->format(*calendars[i], buf, fpos); 331885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString refStr(buf); 331985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 332085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int j = 0; calendars[j] != NULL; j++) { 332185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (j == i) { 332285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho continue; 332385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 332485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho buf.remove(); 332585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fpos.setBeginIndex(0); 332685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fpos.setEndIndex(0); 332785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho calendars[j]->setTime(d, status); 332885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 332985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // Even the different calendar type is specified, 333085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // we should get the same result. 333185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho formatters[i]->format(*calendars[j], buf, fpos); 333285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (refStr != buf) { 333385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Different format result with a different calendar for the same time -" 333485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Reference calendar type=" + calendars[i]->getType() 333585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Another calendar type=" + calendars[j]->getType() 333685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Expected result=" + refStr 333785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Actual result=" + buf); 3338b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 333985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 3340b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 334185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho calendars[i]->setTimeZone(*gmt); 334285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho calendars[i]->clear(); 334385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ppos.setErrorIndex(-1); 334485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ppos.setIndex(0); 334585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 334685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // Normal case parse result - the given calendar matches the calendar 334785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // used by the formatter 334885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho formatters[i]->parse(refStr, *calendars[i], ppos); 334985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 335085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int j = 0; calendars[j] != NULL; j++) { 335185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (j == i) { 335285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho continue; 335385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 335485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho calendars[j]->setTimeZone(*gmt); 335585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho calendars[j]->clear(); 335685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ppos.setErrorIndex(-1); 335785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ppos.setIndex(0); 335885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 335985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // Even the different calendar type is specified, 336085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // we should get the same time and time zone. 336185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho formatters[i]->parse(refStr, *calendars[j], ppos); 336285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (calendars[i]->getTime(status) != calendars[j]->getTime(status) 336385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho || calendars[i]->getTimeZone() != calendars[j]->getTimeZone()) { 336485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString tzid; 336585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Different parse result with a different calendar for the same string -" 336685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Reference calendar type=" + calendars[i]->getType() 336785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Another calendar type=" + calendars[j]->getType() 336885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Date string=" + refStr 336985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Expected time=" + calendars[i]->getTime(status) 337085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Expected time zone=" + calendars[i]->getTimeZone().getID(tzid) 337185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Actual time=" + calendars[j]->getTime(status) 337285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Actual time zone=" + calendars[j]->getTimeZone().getID(tzid)); 3373b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 3374b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 337585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (U_FAILURE(status)) { 337685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: " + u_errorName(status)); 337785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho break; 337885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 337985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 338085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 338185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete tz; 338285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete gmt; 338385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int i = 0; calendars[i] != NULL; i++) { 338485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete calendars[i]; 338585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 338685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int i = 0; formatters[i] != NULL; i++) { 338785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete formatters[i]; 3388b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 3389b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 3390b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3391b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* 3392b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestRelativeError(void) 3393b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 3394b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status; 3395b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale en("en"); 339650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 3397b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *en_reltime_reldate = DateFormat::createDateTimeInstance(DateFormat::kFullRelative,DateFormat::kFullRelative,en); 3398b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(en_reltime_reldate == NULL) { 3399b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("PASS: rel date/rel time failed"); 3400b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 3401b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: rel date/rel time created, should have failed."); 3402b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete en_reltime_reldate; 3403b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 3404b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 3405b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3406b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestRelativeOther(void) 3407b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 3408b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("Nothing in this test. When we get more data from CLDR, put in some tests of -2, +2, etc. "); 3409b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 3410b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 3411b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 341285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hovoid DateFormatTest::Test6338(void) 341385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho{ 341485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UErrorCode status = U_ZERO_ERROR; 341585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 341685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho SimpleDateFormat *fmt1 = new SimpleDateFormat(UnicodeString("y-M-d"), Locale("ar"), status); 341750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (failure(status, "new SimpleDateFormat", TRUE)) return; 341885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 341985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt1 = date(2008-1900, UCAL_JUNE, 10, 12, 00); 342085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str1; 342185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str1 = fmt1->format(dt1, str1); 342285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str1); 342385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 342485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt11 = fmt1->parse(str1, status); 342585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "fmt->parse"); 342685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 342785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str11; 342885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str11 = fmt1->format(dt11, str11); 342985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str11); 343085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 343185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (str1 != str11) { 343285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Different dates str1:" + str1 343385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + " str2:" + str11); 343485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 343585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmt1; 343685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 343785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ///////////////// 343885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 343985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho status = U_ZERO_ERROR; 344085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho SimpleDateFormat *fmt2 = new SimpleDateFormat(UnicodeString("y M d"), Locale("ar"), status); 344185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "new SimpleDateFormat"); 344285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 344385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt2 = date(2008-1900, UCAL_JUNE, 10, 12, 00); 344485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str2; 344585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str2 = fmt2->format(dt2, str2); 344685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str2); 344785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 344885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt22 = fmt2->parse(str2, status); 344985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "fmt->parse"); 345085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 345185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str22; 345285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str22 = fmt2->format(dt22, str22); 345385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str22); 345485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 345585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (str2 != str22) { 345685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Different dates str1:" + str2 345785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + " str2:" + str22); 345885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 345985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmt2; 346085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 346185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ///////////////// 346285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 346385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho status = U_ZERO_ERROR; 346485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho SimpleDateFormat *fmt3 = new SimpleDateFormat(UnicodeString("y-M-d"), Locale("en-us"), status); 346585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "new SimpleDateFormat"); 346685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 346785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt3 = date(2008-1900, UCAL_JUNE, 10, 12, 00); 346885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str3; 346985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str3 = fmt3->format(dt3, str3); 347085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str3); 347185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 347285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt33 = fmt3->parse(str3, status); 347385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "fmt->parse"); 347485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 347585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str33; 347685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str33 = fmt3->format(dt33, str33); 347785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str33); 347885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 347985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (str3 != str33) { 348085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Different dates str1:" + str3 348185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + " str2:" + str33); 348285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 348385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmt3; 348485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 348585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ///////////////// 348685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 348785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho status = U_ZERO_ERROR; 348885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho SimpleDateFormat *fmt4 = new SimpleDateFormat(UnicodeString("y M d"), Locale("en-us"), status); 348985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "new SimpleDateFormat"); 349085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 349185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt4 = date(2008-1900, UCAL_JUNE, 10, 12, 00); 349285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str4; 349385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str4 = fmt4->format(dt4, str4); 349485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str4); 349585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 349685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt44 = fmt4->parse(str4, status); 349785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "fmt->parse"); 349885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 349985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str44; 350085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str44 = fmt4->format(dt44, str44); 350185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str44); 350285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 350385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (str4 != str44) { 350485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Different dates str1:" + str4 350585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + " str2:" + str44); 350685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 350785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmt4; 350885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 350985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho} 351085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 351185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hovoid DateFormatTest::Test6726(void) 351285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho{ 351385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // status 351485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho// UErrorCode status = U_ZERO_ERROR; 351585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 351685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // fmtf, fmtl, fmtm, fmts; 351785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString strf, strl, strm, strs; 351885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt = date(2008-1900, UCAL_JUNE, 10, 12, 00); 351985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 352085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Locale loc("ja"); 352185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat* fmtf = DateFormat::createDateTimeInstance(DateFormat::FULL, DateFormat::FULL, loc); 352285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat* fmtl = DateFormat::createDateTimeInstance(DateFormat::LONG, DateFormat::FULL, loc); 352385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat* fmtm = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, DateFormat::FULL, loc); 352485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat* fmts = DateFormat::createDateTimeInstance(DateFormat::SHORT, DateFormat::FULL, loc); 352585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (fmtf == NULL || fmtl == NULL || fmtm == NULL || fmts == NULL) { 352685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("Unable to create DateFormat. got NULL."); 352785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /* It may not be true that if one is NULL all is NULL. Just to be safe. */ 352885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmtf; 352985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmtl; 353085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmtm; 353185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmts; 353250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 353385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho return; 353485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 353585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho strf = fmtf->format(dt, strf); 353685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho strl = fmtl->format(dt, strl); 353785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho strm = fmtm->format(dt, strm); 353885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho strs = fmts->format(dt, strs); 353985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 354027f654740f2a26ad62a5c155af9199af9e69b889claireho 354127f654740f2a26ad62a5c155af9199af9e69b889claireho logln("strm.charAt(10)=%04X wanted 0x20\n", strm.charAt(10)); 354227f654740f2a26ad62a5c155af9199af9e69b889claireho if (strm.charAt(10) != UChar(0x0020)) { 354327f654740f2a26ad62a5c155af9199af9e69b889claireho errln((UnicodeString)"FAIL: Improper formatted date: " + strm ); 354485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 354527f654740f2a26ad62a5c155af9199af9e69b889claireho logln("strs.charAt(10)=%04X wanted 0x20\n", strs.charAt(8)); 3546103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if (strs.charAt(10) != UChar(0x0020)) { 354727f654740f2a26ad62a5c155af9199af9e69b889claireho errln((UnicodeString)"FAIL: Improper formatted date: " + strs); 354885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 354985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 355085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmtf; 355150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete fmtl; 355250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete fmtm; 355385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmts; 355485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 355585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho return; 355685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho} 355785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 355885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho/** 355985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Test DateFormat's parsing of default GMT variants. See ticket#6135 356085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 356185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hovoid DateFormatTest::TestGMTParsing() { 356285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho const char* DATA[] = { 356385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "HH:mm:ss Z", 356485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 356585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // pattern, input, expected output (in quotes) 356685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "HH:mm:ss Z", "10:20:30 GMT+03:00", "10:20:30 +0300", 356785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "HH:mm:ss Z", "10:20:30 UT-02:00", "10:20:30 -0200", 356885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "HH:mm:ss Z", "10:20:30 GMT", "10:20:30 +0000", 356985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "HH:mm:ss vvvv", "10:20:30 UT+10:00", "10:20:30 +1000", 357085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "HH:mm:ss zzzz", "10:20:30 UTC", "10:20:30 +0000", // standalone "UTC" 357185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "ZZZZ HH:mm:ss", "UT 10:20:30", "10:20:30 +0000", 35728393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "z HH:mm:ss", "UT+0130 10:20:30", "10:20:30 +0130", 35738393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "z HH:mm:ss", "UTC+0130 10:20:30", "10:20:30 +0130", 35748393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // Note: GMT-1100 no longer works because of the introduction of the short 35758393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // localized GMT support. Previous implementation support this level of 35768393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // leniency (no separator char in localized GMT format), but the new 35778393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // implementation handles GMT-11 as the legitimate short localized GMT format 35788393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius // and stop at there. Otherwise, roundtrip would be broken. 35798393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius //"HH mm Z ss", "10 20 GMT-1100 30", "10:20:30 -1100", 35808393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius "HH mm Z ss", "10 20 GMT-11 30", "10:20:30 -1100", 3581103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius "HH:mm:ssZZZZZ", "14:25:45Z", "14:25:45 +0000", 3582103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius "HH:mm:ssZZZZZ", "15:00:00-08:00", "15:00:00 -0800", 358385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho }; 358485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho const int32_t DATA_len = sizeof(DATA)/sizeof(DATA[0]); 358585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho expectParse(DATA, DATA_len, Locale("en")); 358685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho} 358785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 358885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho// Test case for localized GMT format parsing 358985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho// with no delimitters in offset format (Chinese locale) 359085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hovoid DateFormatTest::Test6880() { 359185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UErrorCode status = U_ZERO_ERROR; 359285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate d1, d2, dp1, dp2, dexp1, dexp2; 359385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString s1, s2; 359485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 359585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho TimeZone *tz = TimeZone::createTimeZone("Asia/Shanghai"); 359685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho GregorianCalendar gcal(*tz, status); 359750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (failure(status, "construct GregorianCalendar", TRUE)) return; 359850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 359985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho gcal.clear(); 36008393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius gcal.set(1910, UCAL_JULY, 1, 12, 00); // offset 8:05:57 360185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho d1 = gcal.getTime(status); 360285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 360385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho gcal.clear(); 360485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho gcal.set(1950, UCAL_JULY, 1, 12, 00); // offset 8:00 360585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho d2 = gcal.getTime(status); 360685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 360785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho gcal.clear(); 360885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho gcal.set(1970, UCAL_JANUARY, 1, 12, 00); 360985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dexp2 = gcal.getTime(status); 36108393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius dexp1 = dexp2 - (5*60 + 57)*1000; // subtract 5m57s 361185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 361285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (U_FAILURE(status)) { 361385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln("FAIL: Gregorian calendar error"); 361485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 361585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 361685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat *fmt = DateFormat::createTimeInstance(DateFormat::kFull, Locale("zh")); 361785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (fmt == NULL) { 361885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("Unable to create DateFormat. Got NULL."); 361985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho return; 362085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 362185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fmt->adoptTimeZone(tz); 362285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 362385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fmt->format(d1, s1); 362485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fmt->format(d2, s2); 362585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 362685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dp1 = fmt->parse(s1, status); 362785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dp2 = fmt->parse(s2, status); 362885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 362985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (U_FAILURE(status)) { 363085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln("FAIL: Parse failure"); 363185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 363285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 363385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (dp1 != dexp1) { 363485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln("FAIL: Failed to parse " + s1 + " parsed: " + dp1 + " expected: " + dexp1); 363585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 363685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (dp2 != dexp2) { 363785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln("FAIL: Failed to parse " + s2 + " parsed: " + dp2 + " expected: " + dexp2); 363885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 363985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 364085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmt; 364185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho} 3642b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3643b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2clairehotypedef struct { 3644b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho const char * localeStr; 3645b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UBool lenient; 3646b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UBool expectFail; 3647b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UnicodeString datePattern; 3648b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UnicodeString dateString; 3649b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho} NumAsStringItem; 3650b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3651b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2clairehovoid DateFormatTest::TestNumberAsStringParsing() 3652b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho{ 3653b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho const NumAsStringItem items[] = { 3654b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // loc lenient fail? datePattern dateString 36558393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "", FALSE, FALSE, UnicodeString("y MMMM d HH:mm:ss"), UnicodeString("2009 7 14 08:43:57") }, // Google Patch. CLDR Ticket 5932. 3656b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "", TRUE, FALSE, UnicodeString("y MMMM d HH:mm:ss"), UnicodeString("2009 7 14 08:43:57") }, 3657b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", FALSE, FALSE, UnicodeString("MMM d, y"), UnicodeString("Jul 14, 2009") }, 3658b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", TRUE, FALSE, UnicodeString("MMM d, y"), UnicodeString("Jul 14, 2009") }, 3659b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", FALSE, TRUE, UnicodeString("MMM d, y"), UnicodeString("7 14, 2009") }, 3660b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", TRUE, FALSE, UnicodeString("MMM d, y"), UnicodeString("7 14, 2009") }, 3661b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", FALSE, FALSE, UnicodeString("yyyy/MM/dd"), UnicodeString("2009/07/14") }, 3662b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", TRUE, FALSE, UnicodeString("yyyy/MM/dd"), UnicodeString("2009/07/14") }, 3663b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho //{ "ja", FALSE, FALSE, UnicodeString("yyyy/MMMMM/d"), UnicodeString("2009/7/14") }, // #8860 covers test failure 3664b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", TRUE, FALSE, UnicodeString("yyyy/MMMMM/d"), UnicodeString("2009/7/14") }, 3665b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", FALSE, FALSE, CharsToUnicodeString("y\\u5E74M\\u6708d\\u65E5"), CharsToUnicodeString("2009\\u5E747\\u670814\\u65E5") }, 3666b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", TRUE, FALSE, CharsToUnicodeString("y\\u5E74M\\u6708d\\u65E5"), CharsToUnicodeString("2009\\u5E747\\u670814\\u65E5") }, 3667b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", FALSE, FALSE, CharsToUnicodeString("y\\u5E74MMMd\\u65E5"), CharsToUnicodeString("2009\\u5E747\\u670814\\u65E5") }, 3668b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", TRUE, FALSE, CharsToUnicodeString("y\\u5E74MMMd\\u65E5"), CharsToUnicodeString("2009\\u5E747\\u670814\\u65E5") }, // #8820 fixes test failure 3669b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ko", FALSE, FALSE, UnicodeString("yyyy. M. d."), UnicodeString("2009. 7. 14.") }, 3670b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ko", TRUE, FALSE, UnicodeString("yyyy. M. d."), UnicodeString("2009. 7. 14.") }, 3671b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ko", FALSE, FALSE, UnicodeString("yyyy. MMMMM d."), CharsToUnicodeString("2009. 7\\uC6D4 14.") }, 3672b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ko", TRUE, FALSE, UnicodeString("yyyy. MMMMM d."), CharsToUnicodeString("2009. 7\\uC6D4 14.") }, // #8820 fixes test failure 3673b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ko", FALSE, FALSE, CharsToUnicodeString("y\\uB144 M\\uC6D4 d\\uC77C"), CharsToUnicodeString("2009\\uB144 7\\uC6D4 14\\uC77C") }, 3674b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ko", TRUE, FALSE, CharsToUnicodeString("y\\uB144 M\\uC6D4 d\\uC77C"), CharsToUnicodeString("2009\\uB144 7\\uC6D4 14\\uC77C") }, 3675b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ko", FALSE, FALSE, CharsToUnicodeString("y\\uB144 MMM d\\uC77C"), CharsToUnicodeString("2009\\uB144 7\\uC6D4 14\\uC77C") }, 3676b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ko", TRUE, FALSE, CharsToUnicodeString("y\\uB144 MMM d\\uC77C"), CharsToUnicodeString("2009\\uB144 7\\uC6D4 14\\uC77C") }, // #8820 fixes test failure 3677b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { NULL, FALSE, FALSE, UnicodeString(""), UnicodeString("") } 3678b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho }; 3679b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho const NumAsStringItem * itemPtr; 3680b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho for (itemPtr = items; itemPtr->localeStr != NULL; itemPtr++ ) { 3681b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho Locale locale = Locale::createFromName(itemPtr->localeStr); 3682b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UErrorCode status = U_ZERO_ERROR; 3683b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho SimpleDateFormat *formatter = new SimpleDateFormat(itemPtr->datePattern, locale, status); 3684b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (formatter == NULL || U_FAILURE(status)) { 3685b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho dataerrln("Unable to create SimpleDateFormat - %s", u_errorName(status)); 3686b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho return; 3687b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 3688b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3689b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho formatter->setLenient(itemPtr->lenient); 3690b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UDate date1 = formatter->parse(itemPtr->dateString, status); 3691b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (U_FAILURE(status)) { 3692b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (!itemPtr->expectFail) { 3693b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho errln("FAIL, err when expected success: Locale \"" + UnicodeString(itemPtr->localeStr) + "\", lenient " + itemPtr->lenient + 3694b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho ": using pattern \"" + itemPtr->datePattern + "\", could not parse \"" + itemPtr->dateString + "\"; err: " + u_errorName(status) ); 3695b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 3696b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } else if (itemPtr->expectFail) { 3697b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho errln("FAIL, expected err but got none: Locale \"" + UnicodeString(itemPtr->localeStr) + "\", lenient " + itemPtr->lenient + 3698b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho ": using pattern \"" + itemPtr->datePattern + "\", did parse \"" + itemPtr->dateString + "\"." ); 3699b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } else if (!itemPtr->lenient) { 3700b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UnicodeString formatted; 3701b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho formatter->format(date1, formatted); 3702b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (formatted != itemPtr->dateString) { 3703b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho errln("FAIL, mismatch formatting parsed date: Locale \"" + UnicodeString(itemPtr->localeStr) + "\", lenient " + itemPtr->lenient + 3704b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho ": using pattern \"" + itemPtr->datePattern + "\", did parse \"" + itemPtr->dateString + "\", formatted result \"" + formatted + "\"."); 3705b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 3706b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 3707b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3708b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho delete formatter; 3709b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 3710b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho} 3711b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 371227f654740f2a26ad62a5c155af9199af9e69b889clairehovoid DateFormatTest::TestISOEra() { 371327f654740f2a26ad62a5c155af9199af9e69b889claireho 371427f654740f2a26ad62a5c155af9199af9e69b889claireho const char* data[] = { 371527f654740f2a26ad62a5c155af9199af9e69b889claireho // input, output 371627f654740f2a26ad62a5c155af9199af9e69b889claireho "BC 4004-10-23T07:00:00Z", "BC 4004-10-23T07:00:00Z", 371727f654740f2a26ad62a5c155af9199af9e69b889claireho "AD 4004-10-23T07:00:00Z", "AD 4004-10-23T07:00:00Z", 371827f654740f2a26ad62a5c155af9199af9e69b889claireho "-4004-10-23T07:00:00Z" , "BC 4005-10-23T07:00:00Z", 371927f654740f2a26ad62a5c155af9199af9e69b889claireho "4004-10-23T07:00:00Z" , "AD 4004-10-23T07:00:00Z", 372027f654740f2a26ad62a5c155af9199af9e69b889claireho }; 372127f654740f2a26ad62a5c155af9199af9e69b889claireho 372227f654740f2a26ad62a5c155af9199af9e69b889claireho int32_t numData = 8; 372327f654740f2a26ad62a5c155af9199af9e69b889claireho 372427f654740f2a26ad62a5c155af9199af9e69b889claireho UErrorCode status = U_ZERO_ERROR; 372527f654740f2a26ad62a5c155af9199af9e69b889claireho 372627f654740f2a26ad62a5c155af9199af9e69b889claireho // create formatter 372727f654740f2a26ad62a5c155af9199af9e69b889claireho SimpleDateFormat *fmt1 = new SimpleDateFormat(UnicodeString("GGG yyyy-MM-dd'T'HH:mm:ss'Z"), status); 372827f654740f2a26ad62a5c155af9199af9e69b889claireho failure(status, "new SimpleDateFormat", TRUE); 3729b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (status == U_MISSING_RESOURCE_ERROR) { 3730b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (fmt1 != NULL) { 3731b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho delete fmt1; 3732b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 3733b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho return; 3734b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 373527f654740f2a26ad62a5c155af9199af9e69b889claireho for(int i=0; i < numData; i+=2) { 373627f654740f2a26ad62a5c155af9199af9e69b889claireho // create input string 373727f654740f2a26ad62a5c155af9199af9e69b889claireho UnicodeString in = data[i]; 373827f654740f2a26ad62a5c155af9199af9e69b889claireho 373927f654740f2a26ad62a5c155af9199af9e69b889claireho // parse string to date 374027f654740f2a26ad62a5c155af9199af9e69b889claireho UDate dt1 = fmt1->parse(in, status); 374127f654740f2a26ad62a5c155af9199af9e69b889claireho failure(status, "fmt->parse", TRUE); 374227f654740f2a26ad62a5c155af9199af9e69b889claireho 374327f654740f2a26ad62a5c155af9199af9e69b889claireho // format date back to string 374427f654740f2a26ad62a5c155af9199af9e69b889claireho UnicodeString out; 374527f654740f2a26ad62a5c155af9199af9e69b889claireho out = fmt1->format(dt1, out); 374627f654740f2a26ad62a5c155af9199af9e69b889claireho logln(out); 374727f654740f2a26ad62a5c155af9199af9e69b889claireho 374827f654740f2a26ad62a5c155af9199af9e69b889claireho // check that roundtrip worked as expected 374927f654740f2a26ad62a5c155af9199af9e69b889claireho UnicodeString expected = data[i+1]; 375027f654740f2a26ad62a5c155af9199af9e69b889claireho if (out != expected) { 375127f654740f2a26ad62a5c155af9199af9e69b889claireho dataerrln((UnicodeString)"FAIL: " + in + " -> " + out + " expected -> " + expected); 375227f654740f2a26ad62a5c155af9199af9e69b889claireho } 375327f654740f2a26ad62a5c155af9199af9e69b889claireho } 375427f654740f2a26ad62a5c155af9199af9e69b889claireho 3755b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho delete fmt1; 375627f654740f2a26ad62a5c155af9199af9e69b889claireho} 375727f654740f2a26ad62a5c155af9199af9e69b889clairehovoid DateFormatTest::TestFormalChineseDate() { 375827f654740f2a26ad62a5c155af9199af9e69b889claireho 375927f654740f2a26ad62a5c155af9199af9e69b889claireho UErrorCode status = U_ZERO_ERROR; 376027f654740f2a26ad62a5c155af9199af9e69b889claireho UnicodeString pattern ("y\\u5e74M\\u6708d\\u65e5", -1, US_INV ); 376127f654740f2a26ad62a5c155af9199af9e69b889claireho pattern = pattern.unescape(); 376227f654740f2a26ad62a5c155af9199af9e69b889claireho UnicodeString override ("y=hanidec;M=hans;d=hans", -1, US_INV ); 376327f654740f2a26ad62a5c155af9199af9e69b889claireho 376427f654740f2a26ad62a5c155af9199af9e69b889claireho // create formatter 376527f654740f2a26ad62a5c155af9199af9e69b889claireho SimpleDateFormat *sdf = new SimpleDateFormat(pattern,override,Locale::getChina(),status); 376627f654740f2a26ad62a5c155af9199af9e69b889claireho failure(status, "new SimpleDateFormat with override", TRUE); 376727f654740f2a26ad62a5c155af9199af9e69b889claireho 376827f654740f2a26ad62a5c155af9199af9e69b889claireho UDate thedate = date(2009-1900, UCAL_JULY, 28); 376927f654740f2a26ad62a5c155af9199af9e69b889claireho FieldPosition pos(0); 377027f654740f2a26ad62a5c155af9199af9e69b889claireho UnicodeString result; 377127f654740f2a26ad62a5c155af9199af9e69b889claireho sdf->format(thedate,result,pos); 377227f654740f2a26ad62a5c155af9199af9e69b889claireho 377327f654740f2a26ad62a5c155af9199af9e69b889claireho UnicodeString expected = "\\u4e8c\\u3007\\u3007\\u4e5d\\u5e74\\u4e03\\u6708\\u4e8c\\u5341\\u516b\\u65e5"; 377427f654740f2a26ad62a5c155af9199af9e69b889claireho expected = expected.unescape(); 377527f654740f2a26ad62a5c155af9199af9e69b889claireho if (result != expected) { 377627f654740f2a26ad62a5c155af9199af9e69b889claireho dataerrln((UnicodeString)"FAIL: -> " + result + " expected -> " + expected); 377727f654740f2a26ad62a5c155af9199af9e69b889claireho } 377827f654740f2a26ad62a5c155af9199af9e69b889claireho 377927f654740f2a26ad62a5c155af9199af9e69b889claireho UDate parsedate = sdf->parse(expected,status); 378027f654740f2a26ad62a5c155af9199af9e69b889claireho if ( parsedate != thedate ) { 378127f654740f2a26ad62a5c155af9199af9e69b889claireho UnicodeString pat1 ("yyyy-MM-dd'T'HH:mm:ss'Z'", -1, US_INV ); 378227f654740f2a26ad62a5c155af9199af9e69b889claireho SimpleDateFormat *usf = new SimpleDateFormat(pat1,Locale::getEnglish(),status); 378327f654740f2a26ad62a5c155af9199af9e69b889claireho UnicodeString parsedres,expres; 378427f654740f2a26ad62a5c155af9199af9e69b889claireho usf->format(parsedate,parsedres,pos); 378527f654740f2a26ad62a5c155af9199af9e69b889claireho usf->format(thedate,expres,pos); 3786b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho dataerrln((UnicodeString)"FAIL: parsed -> " + parsedres + " expected -> " + expres); 378727f654740f2a26ad62a5c155af9199af9e69b889claireho delete usf; 378827f654740f2a26ad62a5c155af9199af9e69b889claireho } 3789b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho delete sdf; 3790b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho} 3791b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3792b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho// Test case for #8675 3793b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho// Incorrect parse offset with stand alone GMT string on 2nd or later iteration. 3794b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2clairehovoid DateFormatTest::TestStandAloneGMTParse() { 3795b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UErrorCode status = U_ZERO_ERROR; 3796b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho SimpleDateFormat *sdf = new SimpleDateFormat("ZZZZ", Locale(""), status); 3797b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3798103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if (U_SUCCESS(status)) { 3799b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3800b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UnicodeString inText("GMT$$$"); 3801b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho for (int32_t i = 0; i < 10; i++) { 3802b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho ParsePosition pos(0); 3803b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho sdf->parse(inText, pos); 3804b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (pos.getIndex() != 3) { 3805b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho errln((UnicodeString)"FAIL: Incorrect output parse position: actual=" + pos.getIndex() + " expected=3"); 3806b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 3807b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 3808b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3809b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho delete sdf; 3810103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } else { 3811103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius dataerrln("Unable to create SimpleDateFormat - %s", u_errorName(status)); 3812103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 3813103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius} 3814103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 3815103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusvoid DateFormatTest::TestParsePosition() { 3816103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const char* TestData[][4] = { 3817103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius // {<pattern>, <lead>, <date string>, <trail>} 3818103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius {"yyyy-MM-dd HH:mm:ssZ", "", "2010-01-10 12:30:00+0500", ""}, 3819103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius {"yyyy-MM-dd HH:mm:ss ZZZZ", "", "2010-01-10 12:30:00 GMT+05:00", ""}, 3820103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius {"Z HH:mm:ss", "", "-0100 13:20:30", ""}, 3821103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius {"y-M-d Z", "", "2011-8-25 -0400", " Foo"}, 3822103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius {"y/M/d H:mm:ss z", "", "2011/7/1 12:34:00 PDT", ""}, 3823103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius {"y/M/d H:mm:ss z", "+123", "2011/7/1 12:34:00 PDT", " PST"}, 3824103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius {"vvvv a h:mm:ss", "", "Pacific Time AM 10:21:45", ""}, 3825103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius {"HH:mm v M/d", "111", "14:15 PT 8/10", " 12345"}, 382654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {"'time zone:' VVVV 'date:' yyyy-MM-dd", "xxxx", "time zone: Los Angeles Time date: 2010-02-25", "xxxx"}, 382754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {"yG", "", "2012AD", ""}, 382854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius {"yG", "", "2012", "x"}, 3829103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius {0, 0, 0, 0}, 3830103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius }; 3831103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 3832103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius for (int32_t i = 0; TestData[i][0]; i++) { 3833103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UErrorCode status = U_ZERO_ERROR; 3834103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius SimpleDateFormat *sdf = new SimpleDateFormat(UnicodeString(TestData[i][0]), status); 3835103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if (failure(status, "new SimpleDateFormat", TRUE)) return; 3836103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 3837103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t startPos, resPos; 3838103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 3839103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius // lead text 3840103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString input(TestData[i][1]); 3841103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius startPos = input.length(); 3842103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 3843103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius // date string 3844103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius input += TestData[i][2]; 3845103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius resPos = input.length(); 3846103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 3847103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius // trail text 3848103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius input += TestData[i][3]; 3849103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 3850103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius ParsePosition pos(startPos); 3851103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius //UDate d = sdf->parse(input, pos); 3852103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius (void)sdf->parse(input, pos); 3853103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 3854103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if (pos.getIndex() != resPos) { 3855103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius errln(UnicodeString("FAIL: Parsing [") + input + "] with pattern [" + TestData[i][0] + "] returns position - " 3856103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius + pos.getIndex() + ", expected - " + resPos); 3857103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 3858103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 3859103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius delete sdf; 3860103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 3861103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius} 3862103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 3863103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 3864103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliustypedef struct { 3865103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t era; 3866103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t year; 3867103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t month; // 1-based 3868103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t isLeapMonth; 3869103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t day; 3870103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius} ChineseCalTestDate; 3871103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 3872103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#define NUM_TEST_DATES 3 3873103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 3874103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliustypedef struct { 3875103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const char * locale; 3876103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t style; // <0 => custom 3877103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString dateString[NUM_TEST_DATES]; 3878103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius} MonthPatternItem; 3879103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 3880103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusvoid DateFormatTest::TestMonthPatterns() 3881103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius{ 3882103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const ChineseCalTestDate dates[NUM_TEST_DATES] = { 3883103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius // era yr mo lp da 3884103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { 78, 29, 4, 0, 2 }, // (in chinese era 78) gregorian 2012-4-22 3885103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { 78, 29, 4, 1, 2 }, // (in chinese era 78) gregorian 2012-5-22 3886103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { 78, 29, 5, 0, 2 }, // (in chinese era 78) gregorian 2012-6-20 3887103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius }; 3888103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 3889103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const MonthPatternItem items[] = { 3890103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius // locale date style; expected formats for the 3 dates above 38918393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "root@calendar=chinese", DateFormat::kLong, { UnicodeString("ren-chen 4 2"), UnicodeString("ren-chen 4bis 2"), UnicodeString("ren-chen 5 2") } }, // Google Patch. CLDR Ticket 5932. 38928393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "root@calendar=chinese", DateFormat::kShort, { UnicodeString("29-04-02"), UnicodeString("29-04bis-02"), UnicodeString("29-05-02") } }, 3893103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "root@calendar=chinese", -1, { UnicodeString("29-4-2"), UnicodeString("29-4bis-2"), UnicodeString("29-5-2") } }, 3894103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "root@calendar=chinese", -2, { UnicodeString("78x29-4-2"), UnicodeString("78x29-4bis-2"), UnicodeString("78x29-5-2") } }, 3895103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "root@calendar=chinese", -3, { UnicodeString("ren-chen-4-2"), UnicodeString("ren-chen-4bis-2"), UnicodeString("ren-chen-5-2") } }, 38968393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "root@calendar=chinese", -4, { UnicodeString("ren-chen 4 2"), UnicodeString("ren-chen 4bis 2"), UnicodeString("ren-chen 5 2") } }, // Google Patch. CLDR Ticket 5932. 3897103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "en@calendar=gregorian", -3, { UnicodeString("2012-4-22"), UnicodeString("2012-5-22"), UnicodeString("2012-6-20") } }, 38988393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "en@calendar=chinese", DateFormat::kLong, { UnicodeString("4 2, ren-chen"), UnicodeString("4bis 2, ren-chen"), UnicodeString("5 2, ren-chen") } }, // Google Patch. CLDR Ticket 5932. 3899103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "en@calendar=chinese", DateFormat::kShort, { UnicodeString("4/2/29"), UnicodeString("4bis/2/29"), UnicodeString("5/2/29") } }, 3900103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zh@calendar=chinese", DateFormat::kLong, { CharsToUnicodeString("\\u58EC\\u8FB0\\u5E74\\u56DB\\u6708\\u4E8C\\u65E5"), 3901103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius CharsToUnicodeString("\\u58EC\\u8FB0\\u5E74\\u95F0\\u56DB\\u6708\\u4E8C\\u65E5"), 3902103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius CharsToUnicodeString("\\u58EC\\u8FB0\\u5E74\\u4E94\\u6708\\u4E8C\\u65E5") } }, 3903103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zh@calendar=chinese", DateFormat::kShort, { CharsToUnicodeString("\\u58EC\\u8FB0-4-2"), 3904103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius CharsToUnicodeString("\\u58EC\\u8FB0-\\u95F04-2"), 3905103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius CharsToUnicodeString("\\u58EC\\u8FB0-5-2") } }, 3906103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zh@calendar=chinese", -3, { CharsToUnicodeString("\\u58EC\\u8FB0-4-2"), 3907103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius CharsToUnicodeString("\\u58EC\\u8FB0-\\u95F04-2"), 3908103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius CharsToUnicodeString("\\u58EC\\u8FB0-5-2") } }, 3909103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zh@calendar=chinese", -4, { CharsToUnicodeString("\\u58EC\\u8FB0 \\u56DB\\u6708 2"), 3910103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius CharsToUnicodeString("\\u58EC\\u8FB0 \\u95F0\\u56DB\\u6708 2"), 3911103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius CharsToUnicodeString("\\u58EC\\u8FB0 \\u4E94\\u6708 2") } }, 3912103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zh_Hant@calendar=chinese", DateFormat::kLong, { CharsToUnicodeString("\\u58EC\\u8FB0\\u5E74\\u56DB\\u6708\\u4E8C\\u65E5"), 3913103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius CharsToUnicodeString("\\u58EC\\u8FB0\\u5E74\\u958F\\u56DB\\u6708\\u4E8C\\u65E5"), 3914103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius CharsToUnicodeString("\\u58EC\\u8FB0\\u5E74\\u4E94\\u6708\\u4E8C\\u65E5") } }, 3915103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "zh_Hant@calendar=chinese", DateFormat::kShort, { CharsToUnicodeString("\\u58EC\\u8FB0/4/2"), 3916103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius CharsToUnicodeString("\\u58EC\\u8FB0/\\u958F4/2"), 3917103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius CharsToUnicodeString("\\u58EC\\u8FB0/5/2") } }, 3918103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "fr@calendar=chinese", DateFormat::kLong, { CharsToUnicodeString("2 s\\u00ECyu\\u00E8 ren-chen"), 3919103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius CharsToUnicodeString("2 s\\u00ECyu\\u00E8bis ren-chen"), 3920103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius CharsToUnicodeString("2 w\\u01D4yu\\u00E8 ren-chen") } }, 3921103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { "fr@calendar=chinese", DateFormat::kShort, { UnicodeString("2/4/29"), UnicodeString("2/4bis/29"), UnicodeString("2/5/29") } }, 39228393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "en@calendar=dangi", DateFormat::kLong, { UnicodeString("3bis 2, 29"), UnicodeString("4 2, 29"), UnicodeString("5 1, 29") } }, // Google Patch. CLDR ticket #5932 39238393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "en@calendar=dangi", DateFormat::kShort, { UnicodeString("3bis/2/29"), UnicodeString("4/2/29"), UnicodeString("5/1/29") } }, 39248393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ko@calendar=dangi", DateFormat::kLong, { CharsToUnicodeString("\\uC784\\uC9C4\\uB144 3bis\\uC6D4 2\\uC77C"), 39258393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius CharsToUnicodeString("\\uC784\\uC9C4\\uB144 4\\uC6D4 2\\uC77C"), 39268393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius CharsToUnicodeString("\\uC784\\uC9C4\\uB144 5\\uC6D4 1\\uC77C") } }, 39278393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius { "ko@calendar=dangi", DateFormat::kShort, { CharsToUnicodeString("29. 3bis. 2."), 39288393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius CharsToUnicodeString("29. 4. 2."), 39298393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius CharsToUnicodeString("29. 5. 1.") } }, 3930103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius // terminator 3931103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius { NULL, 0, { UnicodeString(""), UnicodeString(""), UnicodeString("") } } 3932103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius }; 3933103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 3934103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius //. style: -1 -2 -3 -4 3935103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const UnicodeString customPatterns[] = { "y-Ml-d", "G'x'y-Ml-d", "U-M-d", "U MMM d" }; // like old root pattern, using 'l' 3936103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 3937103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UErrorCode status = U_ZERO_ERROR; 3938103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius Locale rootChineseCalLocale = Locale::createFromName("root@calendar=chinese"); 3939103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius Calendar * rootChineseCalendar = Calendar::createInstance(rootChineseCalLocale, status); 3940103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if (U_SUCCESS(status)) { 3941103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const MonthPatternItem * itemPtr; 3942103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius for (itemPtr = items; itemPtr->locale != NULL; itemPtr++ ) { 3943103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius Locale locale = Locale::createFromName(itemPtr->locale); 3944103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius DateFormat * dmft = (itemPtr->style >= 0)? 3945103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius DateFormat::createDateInstance((DateFormat::EStyle)itemPtr->style, locale): 3946103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius new SimpleDateFormat(customPatterns[-itemPtr->style - 1], locale, status); 3947103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if ( dmft != NULL ) { 3948103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if (U_SUCCESS(status)) { 3949103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const ChineseCalTestDate * datePtr = dates; 3950103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t idate; 3951103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius for (idate = 0; idate < NUM_TEST_DATES; idate++, datePtr++) { 3952103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius rootChineseCalendar->clear(); 3953103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius rootChineseCalendar->set(UCAL_ERA, datePtr->era); 3954103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius rootChineseCalendar->set(datePtr->year, datePtr->month-1, datePtr->day); 3955103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius rootChineseCalendar->set(UCAL_IS_LEAP_MONTH, datePtr->isLeapMonth); 3956103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString result; 3957103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius FieldPosition fpos(0); 3958103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius dmft->format(*rootChineseCalendar, result, fpos); 3959103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if ( result.compare(itemPtr->dateString[idate]) != 0 ) { 3960103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius errln( UnicodeString("FAIL: Chinese calendar format for locale ") + UnicodeString(itemPtr->locale) + ", style " + itemPtr->style + 3961103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius ", expected \"" + itemPtr->dateString[idate] + "\", got \"" + result + "\""); 3962103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } else { 3963103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius // formatted OK, try parse 3964103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius ParsePosition ppos(0); 3965103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius // ensure we are really parsing the fields we should be 3966103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius rootChineseCalendar->set(UCAL_YEAR, 1); 3967103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius rootChineseCalendar->set(UCAL_MONTH, 0); 3968103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius rootChineseCalendar->set(UCAL_IS_LEAP_MONTH, 0); 3969103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius rootChineseCalendar->set(UCAL_DATE, 1); 3970103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius // 3971103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius dmft->parse(result, *rootChineseCalendar, ppos); 3972103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t year = rootChineseCalendar->get(UCAL_YEAR, status); 3973103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t month = rootChineseCalendar->get(UCAL_MONTH, status) + 1; 3974103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t isLeapMonth = rootChineseCalendar->get(UCAL_IS_LEAP_MONTH, status); 3975103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius int32_t day = rootChineseCalendar->get(UCAL_DATE, status); 3976103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if ( ppos.getIndex() < result.length() || year != datePtr->year || month != datePtr->month || isLeapMonth != datePtr->isLeapMonth || day != datePtr->day ) { 3977103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius errln( UnicodeString("FAIL: Chinese calendar parse for locale ") + UnicodeString(itemPtr->locale) + ", style " + itemPtr->style + 3978103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius ", string \"" + result + "\", expected " + datePtr->year +"-"+datePtr->month+"("+datePtr->isLeapMonth+")-"+datePtr->day + ", got pos " + 3979103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius ppos.getIndex() + " " + year +"-"+month+"("+isLeapMonth+")-"+day); 3980103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 3981103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 3982103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 3983103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } else { 3984103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius dataerrln("Error creating SimpleDateFormat for Chinese calendar- %s", u_errorName(status)); 3985103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 3986103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius delete dmft; 3987103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } else { 3988103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius dataerrln("FAIL: Unable to create DateFormat for Chinese calendar- %s", u_errorName(status)); 3989103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 3990103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 3991103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius delete rootChineseCalendar; 3992103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } else { 3993103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius errln(UnicodeString("FAIL: Unable to create Calendar for root@calendar=chinese")); 3994103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 3995103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius} 3996103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 3997103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliustypedef struct { 3998103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const char * locale; 3999103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString pattern; 400054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UDisplayContext capitalizationContext; 4001103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString expectedFormat; 4002103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius} TestContextItem; 4003103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius 4004103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusvoid DateFormatTest::TestContext() 4005103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius{ 4006103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const UDate july022008 = 1215000001979.0; 4007103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const TestContextItem items[] = { 400854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius //locale pattern capitalizationContext expected formatted date 400954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "fr", UnicodeString("MMMM y"), UDISPCTX_CAPITALIZATION_NONE, UnicodeString("juillet 2008") }, 4010103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#if !UCONFIG_NO_BREAK_ITERATION 401154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "fr", UnicodeString("MMMM y"), UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, UnicodeString("juillet 2008") }, 401254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "fr", UnicodeString("MMMM y"), UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, UnicodeString("Juillet 2008") }, 401354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "fr", UnicodeString("MMMM y"), UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU, UnicodeString("juillet 2008") }, 401454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "fr", UnicodeString("MMMM y"), UDISPCTX_CAPITALIZATION_FOR_STANDALONE, UnicodeString("Juillet 2008") }, 4015103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#endif 401654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "cs", UnicodeString("LLLL y"), UDISPCTX_CAPITALIZATION_NONE, CharsToUnicodeString("\\u010Dervenec 2008") }, 4017103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#if !UCONFIG_NO_BREAK_ITERATION 401854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "cs", UnicodeString("LLLL y"), UDISPCTX_CAPITALIZATION_FOR_MIDDLE_OF_SENTENCE, CharsToUnicodeString("\\u010Dervenec 2008") }, 401954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "cs", UnicodeString("LLLL y"), UDISPCTX_CAPITALIZATION_FOR_BEGINNING_OF_SENTENCE, CharsToUnicodeString("\\u010Cervenec 2008") }, 402054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "cs", UnicodeString("LLLL y"), UDISPCTX_CAPITALIZATION_FOR_UI_LIST_OR_MENU, CharsToUnicodeString("\\u010Cervenec 2008") }, 402154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "cs", UnicodeString("LLLL y"), UDISPCTX_CAPITALIZATION_FOR_STANDALONE, CharsToUnicodeString("\\u010Dervenec 2008") }, 4022103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#endif 4023103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius // terminator 402454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { NULL, UnicodeString(""), (UDisplayContext)0, UnicodeString("") } 4025103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius }; 4026103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UErrorCode status = U_ZERO_ERROR; 4027103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius Calendar* cal = Calendar::createInstance(status); 4028103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if (U_FAILURE(status)) { 4029103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius dataerrln(UnicodeString("FAIL: Unable to create Calendar for default timezone and locale.")); 4030103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } else { 4031103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius cal->setTime(july022008, status); 4032103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius const TestContextItem * itemPtr; 4033103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius for (itemPtr = items; itemPtr->locale != NULL; itemPtr++ ) { 4034103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius Locale locale = Locale::createFromName(itemPtr->locale); 4035103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius status = U_ZERO_ERROR; 4036103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius SimpleDateFormat * sdmft = new SimpleDateFormat(itemPtr->pattern, locale, status); 4037103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if (U_FAILURE(status)) { 4038103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius dataerrln(UnicodeString("FAIL: Unable to create SimpleDateFormat for specified pattern with locale ") + UnicodeString(itemPtr->locale)); 4039103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } else { 404054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius sdmft->setContext(itemPtr->capitalizationContext, status); 4041103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius UnicodeString result; 4042103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius FieldPosition pos(0); 404354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius sdmft->format(*cal, result, pos); 4044103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if (result.compare(itemPtr->expectedFormat) != 0) { 4045103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius errln(UnicodeString("FAIL: format for locale ") + UnicodeString(itemPtr->locale) + 404654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius ", status " + (int)status + 4047103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius ", capitalizationContext " + (int)itemPtr->capitalizationContext + 4048103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius ", expected " + itemPtr->expectedFormat + ", got " + result); 4049103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 4050103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 4051103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if (sdmft) { 4052103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius delete sdmft; 4053103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 4054103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 4055103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius } 4056103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius if (cal) { 4057103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius delete cal; 4058b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 4059b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho} 406027f654740f2a26ad62a5c155af9199af9e69b889claireho 406154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius// test item for a particular locale + calendar and date format 406254dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliustypedef struct { 406354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius int32_t year; 406454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius int32_t month; 406554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius int32_t day; 406654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius int32_t hour; 406754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius int32_t minute; 406854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString formattedDate; 406954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius} CalAndFmtTestItem; 407054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 407154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius// test item giving locale + calendar, date format, and CalAndFmtTestItems 407254dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliustypedef struct { 407354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius const char * locale; // with calendar 407454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius DateFormat::EStyle style; 407554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius const CalAndFmtTestItem *caftItems; 407654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius} TestNonGregoItem; 407754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 407854dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusvoid DateFormatTest::TestNonGregoFmtParse() 407954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius{ 408054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius // test items for he@calendar=hebrew, long date format 408154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius const CalAndFmtTestItem cafti_he_hebrew_long[] = { 408254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { 4999, 12, 29, 12, 0, CharsToUnicodeString("\\u05DB\\u05F4\\u05D8 \\u05D1\\u05D0\\u05DC\\u05D5\\u05DC \\u05D3\\u05F3\\u05EA\\u05EA\\u05E7\\u05E6\\u05F4\\u05D8") }, 408354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { 5100, 0, 1, 12, 0, CharsToUnicodeString("\\u05D0\\u05F3 \\u05D1\\u05EA\\u05E9\\u05E8\\u05D9 \\u05E7\\u05F3") }, 408454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { 5774, 5, 1, 12, 0, CharsToUnicodeString("\\u05D0\\u05F3 \\u05D1\\u05D0\\u05D3\\u05E8 \\u05D0\\u05F3 \\u05EA\\u05E9\\u05E2\\u05F4\\u05D3") }, 408554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { 5999, 12, 29, 12, 0, CharsToUnicodeString("\\u05DB\\u05F4\\u05D8 \\u05D1\\u05D0\\u05DC\\u05D5\\u05DC \\u05EA\\u05EA\\u05E7\\u05E6\\u05F4\\u05D8") }, 408654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { 6100, 0, 1, 12, 0, CharsToUnicodeString("\\u05D0\\u05F3 \\u05D1\\u05EA\\u05E9\\u05E8\\u05D9 \\u05D5\\u05F3\\u05E7\\u05F3") }, 408754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { 0, 0, 0, 0, 0, UnicodeString("") } // terminator 408854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius }; 408954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius // overal test items 409054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius const TestNonGregoItem items[] = { 409154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { "he@calendar=hebrew", DateFormat::kLong, cafti_he_hebrew_long }, 409254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius { NULL, DateFormat::kNone, NULL } // terminator 409354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius }; 409454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius const TestNonGregoItem * itemPtr; 409554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius for (itemPtr = items; itemPtr->locale != NULL; itemPtr++) { 409654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius Locale locale = Locale::createFromName(itemPtr->locale); 409754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius DateFormat * dfmt = DateFormat::createDateInstance(itemPtr->style, locale); 409854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if (dfmt == NULL) { 409954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius dataerrln("DateFormat::createDateInstance fails for locale %s", itemPtr->locale); 410054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } else { 410154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius Calendar * cal = (dfmt->getCalendar())->clone(); 410254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if (cal == NULL) { 410354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius dataerrln("(DateFormat::getCalendar)->clone() fails for locale %s", itemPtr->locale); 410454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } else { 410554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius const CalAndFmtTestItem * caftItemPtr; 410654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius for (caftItemPtr = itemPtr->caftItems; caftItemPtr->year != 0; caftItemPtr++) { 410754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius cal->clear(); 410854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius cal->set(UCAL_YEAR, caftItemPtr->year); 410954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius cal->set(UCAL_MONTH, caftItemPtr->month); 411054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius cal->set(UCAL_DATE, caftItemPtr->day); 411154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius cal->set(UCAL_HOUR_OF_DAY, caftItemPtr->hour); 411254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius cal->set(UCAL_MINUTE, caftItemPtr->minute); 411354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString result; 411454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius FieldPosition fpos(0); 411554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius dfmt->format(*cal, result, fpos); 411654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if ( result.compare(caftItemPtr->formattedDate) != 0 ) { 411754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius errln( UnicodeString("FAIL: date format for locale ") + UnicodeString(itemPtr->locale) + ", style " + itemPtr->style + 411854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius ", expected \"" + caftItemPtr->formattedDate + "\", got \"" + result + "\""); 411954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } else { 412054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius // formatted OK, try parse 412154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius ParsePosition ppos(0); 412254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius dfmt->parse(result, *cal, ppos); 412354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UErrorCode status = U_ZERO_ERROR; 412454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius int32_t year = cal->get(UCAL_YEAR, status); 412554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius int32_t month = cal->get(UCAL_MONTH, status); 412654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius int32_t day = cal->get(UCAL_DATE, status); 412754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if ( U_FAILURE(status) || ppos.getIndex() < result.length() || year != caftItemPtr->year || month != caftItemPtr->month || day != caftItemPtr->day ) { 412854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius errln( UnicodeString("FAIL: date parse for locale ") + UnicodeString(itemPtr->locale) + ", style " + itemPtr->style + 412954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius ", string \"" + result + "\", expected " + caftItemPtr->year +"-"+caftItemPtr->month+"-"+caftItemPtr->day + ", got pos " + 413054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius ppos.getIndex() + " " + year +"-"+month+"-"+day + " status " + UnicodeString(u_errorName(status)) ); 413154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 413254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 413354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 413454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius delete cal; 413554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 413654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius delete dfmt; 413754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 413854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 413954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius} 414054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 414154dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusstatic const UDate TEST_DATE = 1326585600000.; // 2012-jan-15 414254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 414354dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusvoid DateFormatTest::TestDotAndAtLeniency() { 414454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius // Test for date/time parsing regression with CLDR 22.1/ICU 50 pattern strings. 414554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius // For details see http://bugs.icu-project.org/trac/ticket/9789 414654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius static const char *locales[] = { "en", "fr" }; 414754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius for (int32_t i = 0; i < LENGTHOF(locales); ++i) { 414854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius Locale locale(locales[i]); 414954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 415054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius for (DateFormat::EStyle dateStyle = DateFormat::FULL; dateStyle <= DateFormat::SHORT; 415154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius dateStyle = static_cast<DateFormat::EStyle>(dateStyle + 1)) { 415254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius LocalPointer<DateFormat> dateFormat(DateFormat::createDateInstance(dateStyle, locale)); 415354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 415454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius for (DateFormat::EStyle timeStyle = DateFormat::FULL; timeStyle <= DateFormat::SHORT; 415554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius timeStyle = static_cast<DateFormat::EStyle>(timeStyle + 1)) { 415654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius LocalPointer<DateFormat> format(DateFormat::createDateTimeInstance(dateStyle, timeStyle, locale)); 415754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius LocalPointer<DateFormat> timeFormat(DateFormat::createTimeInstance(timeStyle, locale)); 415854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString formattedString; 415954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if (format.isNull()) { 416054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius dataerrln("Unable to create DateFormat"); 416154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius continue; 416254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 416354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius format->format(TEST_DATE, formattedString); 416454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 416554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if (!showParse(*format, formattedString)) { 416654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius errln(UnicodeString(" with date-time: dateStyle=") + dateStyle + " timeStyle=" + timeStyle); 416754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 416854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 416954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString ds, ts; 417054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius formattedString = dateFormat->format(TEST_DATE, ds) + " " + timeFormat->format(TEST_DATE, ts); 417154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if (!showParse(*format, formattedString)) { 417254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius errln(UnicodeString(" with date sp sp time: dateStyle=") + dateStyle + " timeStyle=" + timeStyle); 417354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 417454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if (formattedString.indexOf("n ") >= 0) { // will add "." after the end of text ending in 'n', like Jan. 417554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString plusDot(formattedString); 417654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius plusDot.findAndReplace("n ", "n. ").append("."); 417754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if (!showParse(*format, plusDot)) { 417854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius errln(UnicodeString(" with date plus-dot time: dateStyle=") + dateStyle + " timeStyle=" + timeStyle); 417954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 418054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 418154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if (formattedString.indexOf(". ") >= 0) { // will subtract "." at the end of strings. 418254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString minusDot(formattedString); 418354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius minusDot.findAndReplace(". ", " "); 418454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if (!showParse(*format, minusDot)) { 418554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius errln(UnicodeString(" with date minus-dot time: dateStyle=") + dateStyle + " timeStyle=" + timeStyle); 418654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 418754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 418854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 418954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 419054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 419154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius} 419254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 419354dcd9b6a06071f647dac967e9e267abb9410720Craig CorneliusUBool DateFormatTest::showParse(DateFormat &format, const UnicodeString &formattedString) { 419454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius ParsePosition parsePosition; 419554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UDate parsed = format.parse(formattedString, parsePosition); 419654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UBool ok = TEST_DATE == parsed && parsePosition.getIndex() == formattedString.length(); 419754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius UnicodeString pattern; 419854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius static_cast<SimpleDateFormat &>(format).toPattern(pattern); 419954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius if (ok) { 420054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius logln(pattern + " parsed: " + formattedString); 420154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } else { 420254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius errln(pattern + " fails to parse: " + formattedString); 420354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius } 420454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius return ok; 420554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius} 420654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius 4207b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_FORMATTING */ 4208b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 4209b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//eof 4210