dtfmttst.cpp revision 85bf2e2fbc60a9f938064abc8127d61da7d19882
1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/******************************************************************** 2b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * COPYRIGHT: 385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Copyright (c) 1997-2009, International Business Machines Corporation and 4b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * others. All Rights Reserved. 5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ********************************************************************/ 6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 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" 12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/timezone.h" 13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/gregocal.h" 14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/smpdtfmt.h" 15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/datefmt.h" 16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/simpletz.h" 17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/strenum.h" 18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/dtfmtsym.h" 19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "cmemory.h" 20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "cstring.h" 21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "caltest.h" // for fieldName 22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include <stdio.h> // for sprintf 23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifdef U_WINDOWS 25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "windttst.h" 26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define ARRAY_SIZE(array) (sizeof array / sizeof array[0]) 29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho#define ASSERT_OK(status) if(U_FAILURE(status)) {errcheckln(status, #status " = %s @ %s:%d", u_errorName(status), __FILE__, __LINE__); return; } 31b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 32b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ***************************************************************************** 33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// class DateFormatTest 34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ***************************************************************************** 35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::runIndexedTest( int32_t index, UBool exec, const char* &name, char* /*par*/ ) 37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // if (exec) logln((UnicodeString)"TestSuite DateFormatTest"); 39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru switch (index) { 40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(0,TestEquals); 41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(1,TestTwoDigitYearDSTParse); 42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(2,TestFieldPosition); 43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(3,TestPartialParse994); 44b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(4,TestRunTogetherPattern985); 45b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(5,TestRunTogetherPattern917); 46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(6,TestCzechMonths459); 47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(7,TestLetterDPattern212); 48b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(8,TestDayOfYearPattern195); 49b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(9,TestQuotePattern161); 50b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(10,TestBadInput135); 51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(11,TestBadInput135a); 52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(12,TestTwoDigitYear); 53b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(13,TestDateFormatZone061); 54b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(14,TestDateFormatZone146); 55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(15,TestLocaleDateFormat); 56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(16,TestWallyWedel); 57b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(17,TestDateFormatCalendar); 58b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(18,TestSpaceParsing); 59b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(19,TestExactCountFormat); 60b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(20,TestWhiteSpaceParsing); 61b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(21,TestInvalidPattern); 62b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(22,TestGeneral); 63b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(23,TestGreekMay); 64b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(24,TestGenericTime); 65b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(25,TestGenericTimeZoneOrder); 66b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(26,TestHost); 67b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(27,TestEras); 68b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(28,TestNarrowNames); 69b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(29,TestStandAloneDays); 70b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(30,TestStandAloneMonths); 71b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(31,TestQuarters); 72b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(32,TestZTimeZoneParsing); 73b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(33,TestRelative); 74b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(34,TestRelativeClone); 75b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(35,TestHostClone); 76b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TESTCASE(36,TestTimeZoneDisplayName); 7785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho TESTCASE(37,TestRoundtripWithCalendar); 7885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho TESTCASE(38,Test6338); 7985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho TESTCASE(39,Test6726); 8085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho TESTCASE(40,TestGMTParsing); 8185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho TESTCASE(41,Test6880); 82b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 8385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho TESTCASE(42,TestRelativeError); 8485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho TESTCASE(43,TestRelativeOther); 85b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 86b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru default: name = ""; break; 87b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 88b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 89b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 90b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// Test written by Wally Wedel and emailed to me. 91b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestWallyWedel() 92b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 93b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 94b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 95b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Instantiate a TimeZone so we can get the ids. 96b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 97b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone *tz = new SimpleTimeZone(7,""); 98b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 99b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Computational variables. 100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t offset, hours, minutes, seconds; 102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Instantiate a SimpleDateFormat set up to produce a full time 104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru zone name. 105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat *sdf = new SimpleDateFormat((UnicodeString)"zzzz", status); 107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A String array for the time zone ids. 109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t ids_length; 111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru StringEnumeration* ids = TimeZone::createEnumeration(); 112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ids_length = ids->count(status); 113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * How many ids do we have? 115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("Time Zone IDs size: %d", ids_length); 117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Column headings (sort of) 119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("Ordinal ID offset(h:m) name"); 121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Loop through the tzs. 123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate today = Calendar::getNow(); 125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Calendar *cal = Calendar::createInstance(status); 126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int32_t i = 0; i < ids_length; i++) { 127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // logln(i + " " + ids[i]); 128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UnicodeString* id = ids->snext(status); 129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone *ttz = TimeZone::createTimeZone(*id); 130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // offset = ttz.getRawOffset(); 131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru cal->setTimeZone(*ttz); 132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru cal->setTime(today, status); 133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru offset = cal->get(UCAL_ZONE_OFFSET, status) + cal->get(UCAL_DST_OFFSET, status); 134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // logln(i + " " + ids[i] + " offset " + offset); 135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* sign = "+"; 136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (offset < 0) { 137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru sign = "-"; 138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru offset = -offset; 139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru hours = offset/3600000; 141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru minutes = (offset%3600000)/60000; 142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru seconds = (offset%60000)/1000; 143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString dstOffset = (UnicodeString)"" + sign + (hours < 10 ? "0" : "") + 144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru (int32_t)hours + ":" + (minutes < 10 ? "0" : "") + (int32_t)minutes; 145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (seconds != 0) { 146b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dstOffset = dstOffset + ":" + (seconds < 10 ? "0" : "") + seconds; 147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Instantiate a date so we can display the time zone name. 150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru sdf->setTimeZone(*ttz); 152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Format the output. 154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString fmtOffset; 156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru FieldPosition pos(0); 157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru sdf->format(today,fmtOffset, pos); 158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // UnicodeString fmtOffset = tzS.toString(); 159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString *fmtDstOffset = 0; 160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fmtOffset.startsWith("GMT")) 161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //fmtDstOffset = fmtOffset->substring(3); 163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmtDstOffset = new UnicodeString(); 164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmtOffset.extract(3, fmtOffset.length(), *fmtDstOffset); 165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Show our result. 168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBool ok = fmtDstOffset == 0 || *fmtDstOffset == dstOffset; 170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (ok) 171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(UnicodeString() + i + " " + *id + " " + dstOffset + 173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru " " + fmtOffset + 174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru (fmtDstOffset != 0 ? " ok" : " ?")); 175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else 177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 178b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln(UnicodeString() + i + " " + *id + " " + dstOffset + 179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru " " + fmtOffset + " *** FAIL ***"); 180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete ttz; 182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmtDstOffset; 183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete cal; 185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // delete ids; // TODO: BAD API 186b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete ids; 187b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete sdf; 188b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete tz; 189b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 192b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 193b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 194b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test operator== 195b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 196b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 197b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestEquals() 198b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 199b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat* fmtA = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, DateFormat::FULL); 200b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat* fmtB = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, DateFormat::FULL); 201b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if ( fmtA == NULL || fmtB == NULL){ 202b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dataerrln("Error calling DateFormat::createDateTimeInstance"); 203b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmtA; 204b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmtB; 205b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 206b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 207b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 208b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(*fmtA == *fmtB)) errln((UnicodeString)"FAIL"); 209b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmtA; 210b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmtB; 211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone* test = TimeZone::createTimeZone("PDT"); 213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete test; 214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 218b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 219b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the parsing of 2-digit years. 220b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 222b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestTwoDigitYearDSTParse(void) 223b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 225b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat* fullFmt = new SimpleDateFormat((UnicodeString)"EEE MMM dd HH:mm:ss.SSS zzz yyyy G", status); 226b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat *fmt = new SimpleDateFormat((UnicodeString)"dd-MMM-yy h:mm:ss 'o''clock' a z", Locale::getEnglish(), status); 227b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //DateFormat* fmt = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, DateFormat::FULL, Locale::ENGLISH); 228b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString* s = new UnicodeString("03-Apr-04 2:20:47 o'clock AM PST", ""); 229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone* defaultTZ = TimeZone::createDefault(); 230b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone* PST = TimeZone::createTimeZone("PST"); 231b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t defaultOffset = defaultTZ->getRawOffset(); 232b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t PSTOffset = PST->getRawOffset(); 233b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t hour = 2 + (defaultOffset - PSTOffset) / (60*60*1000); 234b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // hour is the expected hour of day, in units of seconds 235b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru hour = ((hour < 0) ? hour + 24 : hour) * 60*60; 236b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 237b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString str; 238b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 239b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(U_FAILURE(status)) { 24085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errcheckln(status, "Could not set up test. exitting - %s", u_errorName(status)); 241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d = fmt->parse(*s, status); 245b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(*s + " P> " + ((DateFormat*)fullFmt)->format(d, str)); 246b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t y, m, day, hr, min, sec; 247b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateToFields(d, y, m, day, hr, min, sec); 248b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru hour += defaultTZ->inDaylightTime(d, status) ? 1 : 0; 249b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru hr = hr*60*60; 250b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (hr != hour) 251b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Should parse to hour " + hour + " but got " + hr); 252b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: " + (int32_t)status); 255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 256b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete s; 257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmt; 258b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fullFmt; 259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete PST; 260b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete defaultTZ; 261b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 262b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 263b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 264b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 265b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruUChar toHexString(int32_t i) { return (UChar)(i + (i < 10 ? 0x30 : (0x41 - 10))); } 266b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 267b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruUnicodeString& 268b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::escape(UnicodeString& s) 269b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 270b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString buf; 271b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int32_t i=0; i<s.length(); ++i) 272b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 273b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UChar c = s[(int32_t)i]; 274b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (c <= (UChar)0x7F) buf += c; 275b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else { 276b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf += (UChar)0x5c; buf += (UChar)0x55; 277b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf += toHexString((c & 0xF000) >> 12); 278b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf += toHexString((c & 0x0F00) >> 8); 279b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf += toHexString((c & 0x00F0) >> 4); 280b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf += toHexString(c & 0x000F); 281b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 282b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 283b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return (s = buf); 284b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 285b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 286b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 287b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 288b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 289b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This MUST be kept in sync with DateFormatSymbols.gPatternChars. 290b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 291b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char* PATTERN_CHARS = "GyMdkHmsSEDFwWahKzYeugAZvcLQqV"; 292b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 293b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 294b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A list of the names of all the fields in DateFormat. 295b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This MUST be kept in sync with DateFormat. 296b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 297b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char* DATEFORMAT_FIELD_NAMES[] = { 298b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ERA_FIELD", 299b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "YEAR_FIELD", 300b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MONTH_FIELD", 301b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "DATE_FIELD", 302b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "HOUR_OF_DAY1_FIELD", 303b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "HOUR_OF_DAY0_FIELD", 304b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MINUTE_FIELD", 305b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "SECOND_FIELD", 306b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MILLISECOND_FIELD", 307b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "DAY_OF_WEEK_FIELD", 308b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "DAY_OF_YEAR_FIELD", 309b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "DAY_OF_WEEK_IN_MONTH_FIELD", 310b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "WEEK_OF_YEAR_FIELD", 311b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "WEEK_OF_MONTH_FIELD", 312b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "AM_PM_FIELD", 313b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "HOUR1_FIELD", 314b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "HOUR0_FIELD", 315b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "TIMEZONE_FIELD", 316b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "YEAR_WOY_FIELD", 317b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "DOW_LOCAL_FIELD", 318b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EXTENDED_YEAR_FIELD", 319b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "JULIAN_DAY_FIELD", 320b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MILLISECONDS_IN_DAY_FIELD", 321b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "TIMEZONE_RFC_FIELD", 322b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "GENERIC_TIMEZONE_FIELD", 323b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "STAND_ALONE_DAY_FIELD", 324b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "STAND_ALONE_MONTH_FIELD", 325b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "QUARTER_FIELD", 326b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "STAND_ALONE_QUARTER_FIELD", 327b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "TIMEZONE_SPECIAL_FIELD" 328b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 329b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 330b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const int32_t DATEFORMAT_FIELD_NAMES_LENGTH = 331b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru sizeof(DATEFORMAT_FIELD_NAMES) / sizeof(DATEFORMAT_FIELD_NAMES[0]); 332b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 333b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 334b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify that returned field position indices are correct. 335b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 336b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestFieldPosition() { 337b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 338b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t i, j, exp; 339b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString buf; 340b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 341b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Verify data 342b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormatSymbols rootSyms(Locale(""), ec); 343b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertSuccess("DateFormatSymbols", ec); 34485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (U_FAILURE(ec)) { 34585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho return; 34685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 347b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 348b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // local pattern chars data is not longer loaded 349b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // from icu locale bundle 350b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals("patternChars", PATTERN_CHARS, rootSyms.getLocalPatternChars(buf)); 351b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals("patternChars", PATTERN_CHARS, DateFormatSymbols::getPatternUChars()); 352b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertTrue("DATEFORMAT_FIELD_NAMES", DATEFORMAT_FIELD_NAMES_LENGTH == UDAT_FIELD_COUNT); 353b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertTrue("Data", UDAT_FIELD_COUNT == uprv_strlen(PATTERN_CHARS)); 354b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 355b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Create test formatters 356b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t COUNT = 4; 357b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat* dateFormats[COUNT]; 358b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateFormats[0] = DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale::getUS()); 359b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateFormats[1] = DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale::getFrance()); 360b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Make the pattern "G y M d..." 361b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf.remove().append(PATTERN_CHARS); 362b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (j=buf.length()-1; j>=0; --j) buf.insert(j, (UChar)32/*' '*/); 363b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateFormats[2] = new SimpleDateFormat(buf, Locale::getUS(), ec); 364b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Make the pattern "GGGG yyyy MMMM dddd..." 365b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (j=buf.length()-1; j>=0; j-=2) { 366b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (i=0; i<3; ++i) { 367b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf.insert(j, buf.charAt(j)); 368b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 369b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 370b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateFormats[3] = new SimpleDateFormat(buf, Locale::getUS(), ec); 371b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(U_FAILURE(ec)){ 372b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln(UnicodeString("Could not create SimpleDateFormat object for locale en_US. Error: " )+ UnicodeString(u_errorName(ec))); 373b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 374b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 375b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate aug13 = 871508052513.0; 376b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 377b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Expected output field values for above DateFormats on aug13 378b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Fields are given in order of DateFormat field number 379b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* EXPECTED[] = { 380b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "", "1997", "August", "13", "", "", "34", "12", "", 38185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "Wednesday", "", "", "", "", "PM", "2", "", "Pacific Daylight Time", "", "", "", "", "", "", "", "", "", "", "","", 382b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 383b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "", "1997", "ao\\u00FBt", "13", "", "14", "34", "12", "", 38485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "mercredi", "", "", "", "", "", "", "", "heure avanc\\u00e9e du Pacifique", "", "", "", "", "", "", "", "", "", "", "", "", 385b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 386b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "AD", "1997", "8", "13", "14", "14", "34", "12", "5", 38785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "Wed", "225", "2", "33", "2", "PM", "2", "2", "PDT", "1997", "4", "1997", "2450674", "52452513", "-0700", "PT", "4", "8", "3", "3","PDT", 388b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 389b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "Anno Domini", "1997", "August", "0013", "0014", "0014", "0034", "0012", "5130", 39085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "Wednesday", "0225", "0002", "0033", "0002", "PM", "0002", "0002", "Pacific Daylight Time", "1997", "Wednesday", "1997", "2450674", "52452513", "GMT-07:00", 391b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "Pacific Time", "Wednesday", "August", "3rd quarter", "3rd quarter", "United States (Los Angeles)" 392b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 393b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 394b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t EXPECTED_LENGTH = sizeof(EXPECTED)/sizeof(EXPECTED[0]); 395b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 396b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertTrue("data size", EXPECTED_LENGTH == COUNT * UDAT_FIELD_COUNT); 397b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 398b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone* PT = TimeZone::createTimeZone("America/Los_Angeles"); 399b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (j = 0, exp = 0; j < COUNT; ++j) { 400b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // String str; 401b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat* df = dateFormats[j]; 402b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru df->setTimeZone(*PT); 403b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (df->getDynamicClassID() == SimpleDateFormat::getStaticClassID()) { 404b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(" Pattern = " + ((SimpleDateFormat*) df)->toPattern(buf.remove())); 405b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 406b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(" Pattern = ? (not a SimpleDateFormat)"); 407b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 408b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" Result = " + df->format(aug13, buf.remove())); 409b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 410b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (i = 0; i < UDAT_FIELD_COUNT; ++i, ++exp) { 411b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru FieldPosition pos(i); 412b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf.remove(); 413b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru df->format(aug13, buf, pos); 414b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString field; 415b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf.extractBetween(pos.getBeginIndex(), pos.getEndIndex(), field); 416b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"field #" + i + " " + DATEFORMAT_FIELD_NAMES[i], 417b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ctou(EXPECTED[exp]), field); 418b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 419b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 420b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 421b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (i=0; i<COUNT; ++i) { 422b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dateFormats[i]; 423b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 424b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete PT; 425b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 426b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 427b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 428b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 429b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 430b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * General parse/format tests. Add test cases as needed. 431b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 432b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestGeneral() { 433b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* DATA[] = { 434b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss.SSS", 435b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 436b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Milliseconds are left-justified, since they format as fractions of a second 437b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm:ss.S", "fp", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31.6", "2004 03 10 16:36:31.600", 438b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm:ss.SS", "fp", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31.57", "2004 03 10 16:36:31.570", 439b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm:ss.SSS", "F", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31.567", 440b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm:ss.SSSS", "pf", "2004/3/10 16:36:31.5679", "2004 03 10 16:36:31.568", "2004/3/10 16:36:31.5680", 441b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 442b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(DATA, ARRAY_SIZE(DATA), Locale("en", "", "")); 443b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 444b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 445b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 446b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 447b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 448b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify that strings which contain incomplete specifications are parsed 449b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * correctly. In some instances, this means not being parsed at all, and 450b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * returning an appropriate error. 451b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 452b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 453b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestPartialParse994() 454b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 455b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 456b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat* f = new SimpleDateFormat(status); 457b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 45885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (U_FAILURE(status)) { 45985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete f; 46085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho return; 46185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 462b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate null = 0; 463b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 10:11:42", date(97, 1 - 1, 17, 10, 11, 42)); 464b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 10:", null); 465b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 10", null); 466b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 ", null); 467b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17", null); 468b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 469b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete f; 470b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 471b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 472b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 473b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 474b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 475b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::tryPat994(SimpleDateFormat* format, const char* pat, const char* str, UDate expected) 476b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 477b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 478b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate null = 0; 479b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(UnicodeString("Pattern \"") + pat + "\" String \"" + str + "\""); 480b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 481b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru format->applyPattern(pat); 482b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date = format->parse(str, status); 483b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status) || date == null) 484b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 485b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"ParseException: " + (int32_t)status); 486b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (expected != null) errln((UnicodeString)"FAIL: Expected " + dateToString(expected)); 487b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 488b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else 489b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 490b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString f; 491b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ((DateFormat*)format)->format(date, f); 492b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(UnicodeString(" parse(") + str + ") -> " + dateToString(date)); 493b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" format -> " + f); 494b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (expected == null || 495b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru !(date == expected)) errln((UnicodeString)"FAIL: Expected null");//" + expected); 496b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(f == str)) errln(UnicodeString("FAIL: Expected ") + str); 497b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 498b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 499b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(ParseException e) { 500b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // logln((UnicodeString)"ParseException: " + e.getMessage()); 501b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // if (expected != null) errln((UnicodeString)"FAIL: Expected " + dateToString(expected)); 502b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 503b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(Exception e) { 504b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // errln((UnicodeString)"*** Exception:"); 505b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // e.printStackTrace(); 506b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 507b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 508b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 509b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 510b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 511b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 512b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify the behavior of patterns in which digits for different fields run together 513b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * without intervening separators. 514b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 515b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 516b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestRunTogetherPattern985() 517b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 518b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 519b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString format("yyyyMMddHHmmssSSS"); 520b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString now, then; 521b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //UBool flag; 522b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat *formatter = new SimpleDateFormat(format, status); 523b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 524b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date1 = Calendar::getNow(); 525b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ((DateFormat*)formatter)->format(date1, now); 526b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(now); 527b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition pos(0); 528b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date2 = formatter->parse(now, pos); 529b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (date2 == 0) then = "Parse stopped at " + pos.getIndex(); 530b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else ((DateFormat*)formatter)->format(date2, then); 531b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(then); 532b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(date2 == date1)) errln((UnicodeString)"FAIL"); 533b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete formatter; 534b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 535b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 536b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 537b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 538b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 539b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 540b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify the behavior of patterns in which digits for different fields run together 541b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * without intervening separators. 542b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 543b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 544b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestRunTogetherPattern917() 545b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 546b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 547b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat* fmt; 548b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString myDate; 549b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt = new SimpleDateFormat((UnicodeString)"yyyy/MM/dd", status); 550b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 551b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru myDate = "1997/02/03"; 552b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru testIt917(fmt, myDate, date(97, 2 - 1, 3)); 553b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmt; 554b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt = new SimpleDateFormat((UnicodeString)"yyyyMMdd", status); 555b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru myDate = "19970304"; 556b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru testIt917(fmt, myDate, date(97, 3 - 1, 4)); 557b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmt; 558b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 559b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 560b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 561b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 562b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 563b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 564b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::testIt917(SimpleDateFormat* fmt, UnicodeString& str, UDate expected) 565b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 566b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 567b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString pattern; 568b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"pattern=" + fmt->toPattern(pattern) + " string=" + str); 569b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Formattable o; 570b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 571b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ((Format*)fmt)->parseObject(str, o, status); 572b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 573b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) return; 574b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(ParseException e) { 575b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // e.printStackTrace(); 576b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // return; 577b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 578b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Parsed object: " + dateToString(o.getDate())); 579b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(o.getDate() == expected)) errln((UnicodeString)"FAIL: Expected " + dateToString(expected)); 580b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString formatted; ((Format*)fmt)->format(o, formatted, status); 581b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Formatted string: " + formatted); 582b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(formatted == str)) errln((UnicodeString)"FAIL: Expected " + str); 583b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 584b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 585b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 586b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 587b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 588b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 589b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify the handling of Czech June and July, which have the unique attribute that 590b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * one is a proper prefix substring of the other. 591b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 592b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 593b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestCzechMonths459() 594b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 595b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 596b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat* fmt = DateFormat::createDateInstance(DateFormat::FULL, Locale("cs", "", "")); 597b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fmt == NULL){ 598b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dataerrln("Error calling DateFormat::createDateInstance()"); 599b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 600b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 601b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 602b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString pattern; 603b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Pattern " + ((SimpleDateFormat*) fmt)->toPattern(pattern)); 604b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate june = date(97, UCAL_JUNE, 15); 605b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate july = date(97, UCAL_JULY, 15); 606b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString juneStr; fmt->format(june, juneStr); 607b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString julyStr; fmt->format(july, julyStr); 608b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 609b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"format(June 15 1997) = " + juneStr); 610b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d = fmt->parse(juneStr, status); 611b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString s; fmt->format(d, s); 612b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t month,yr,day,hr,min,sec; dateToFields(d,yr,month,day,hr,min,sec); 613b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" -> parse -> " + s + " (month = " + month + ")"); 614b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (month != UCAL_JUNE) errln((UnicodeString)"FAIL: Month should be June"); 615b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"format(July 15 1997) = " + julyStr); 616b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru d = fmt->parse(julyStr, status); 617b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt->format(d, s); 618b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateToFields(d,yr,month,day,hr,min,sec); 619b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" -> parse -> " + s + " (month = " + month + ")"); 620b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (month != UCAL_JULY) errln((UnicodeString)"FAIL: Month should be July"); 621b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 622b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(ParseException e) { 623b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 624b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"Exception: " + (int32_t)status); 625b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 626b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmt; 627b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 628b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 629b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 630b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 631b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 632b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the handling of 'D' in patterns. 633b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 634b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 635b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestLetterDPattern212() 636b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 637b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 638b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString dateString("1995-040.05:01:29"); 639b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString bigD("yyyy-DDD.hh:mm:ss"); 640b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString littleD("yyyy-ddd.hh:mm:ss"); 641b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate expLittleD = date(95, 0, 1, 5, 1, 29); 642b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate expBigD = expLittleD + 39 * 24 * 3600000.0; 643b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expLittleD = expBigD; // Expect the same, with default lenient parsing 644b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"dateString= " + dateString); 645b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat *formatter = new SimpleDateFormat(bigD, status); 646b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 647b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition pos(0); 648b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate myDate = formatter->parse(dateString, pos); 649b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Using " + bigD + " -> " + myDate); 650b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (myDate != expBigD) errln((UnicodeString)"FAIL: Expected " + dateToString(expBigD)); 651b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete formatter; 652b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru formatter = new SimpleDateFormat(littleD, status); 653b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 654b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru pos = ParsePosition(0); 655b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru myDate = formatter->parse(dateString, pos); 656b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Using " + littleD + " -> " + dateToString(myDate)); 657b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (myDate != expLittleD) errln((UnicodeString)"FAIL: Expected " + dateToString(expLittleD)); 658b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete formatter; 659b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 660b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 661b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 662b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 663b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 664b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 665b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the day of year pattern. 666b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 667b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 668b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestDayOfYearPattern195() 669b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 670b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 671b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate today = Calendar::getNow(); 672b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t year,month,day,hour,min,sec; dateToFields(today,year,month,day,hour,min,sec); 673b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate expected = date(year, month, day); 674b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Test Date: " + dateToString(today)); 675b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat* sdf = (SimpleDateFormat*)DateFormat::createDateInstance(); 676b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (sdf == NULL){ 677b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dataerrln("Error calling DateFormat::createDateInstance()"); 678b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 679b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 680b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPattern(*sdf, today, 0, expected); 681b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPattern(*sdf, today, "G yyyy DDD", expected); 682b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete sdf; 683b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 684b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 685b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 686b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 687b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 688b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 689b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::tryPattern(SimpleDateFormat& sdf, UDate d, const char* pattern, UDate expected) 690b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 691b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 692b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (pattern != 0) sdf.applyPattern(pattern); 693b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString thePat; 694b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"pattern: " + sdf.toPattern(thePat)); 695b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString formatResult; (*(DateFormat*)&sdf).format(d, formatResult); 696b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" format -> " + formatResult); 697b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // try { 698b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d2 = sdf.parse(formatResult, status); 699b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" parse(" + formatResult + ") -> " + dateToString(d2)); 700b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (d2 != expected) errln((UnicodeString)"FAIL: Expected " + dateToString(expected)); 701b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString format2; (*(DateFormat*)&sdf).format(d2, format2); 702b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" format -> " + format2); 703b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(formatResult == format2)) errln((UnicodeString)"FAIL: Round trip drift"); 704b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 705b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(Exception e) { 706b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 707b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"Error: " + (int32_t)status); 708b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 709b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 710b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 711b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 712b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 713b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 714b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the handling of single quotes in patterns. 715b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 716b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 717b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestQuotePattern161() 718b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 719b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 720b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat* formatter = new SimpleDateFormat((UnicodeString)"MM/dd/yyyy 'at' hh:mm:ss a zzz", status); 721b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 722b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate currentTime_1 = date(97, UCAL_AUGUST, 13, 10, 42, 28); 723b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString dateString; ((DateFormat*)formatter)->format(currentTime_1, dateString); 724b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString exp("08/13/1997 at 10:42:28 AM "); 725b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"format(" + dateToString(currentTime_1) + ") = " + dateString); 726b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (0 != dateString.compareBetween(0, exp.length(), exp, 0, exp.length())) errln((UnicodeString)"FAIL: Expected " + exp); 727b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete formatter; 728b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 729b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 730b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 731b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 732b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 733b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 734b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify the correct behavior when handling invalid input strings. 735b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 736b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 737b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestBadInput135() 738b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 739b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 740b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat::EStyle looks[] = { 741b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat::SHORT, DateFormat::MEDIUM, DateFormat::LONG, DateFormat::FULL 742b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 743b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t looks_length = (int32_t)(sizeof(looks) / sizeof(looks[0])); 744b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* strings[] = { 745b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "Mar 15", "Mar 15 1997", "asdf", "3/1/97 1:23:", "3/1/00 1:23:45 AM" 746b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 747b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t strings_length = (int32_t)(sizeof(strings) / sizeof(strings[0])); 748b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *full = DateFormat::createDateTimeInstance(DateFormat::LONG, DateFormat::LONG); 749b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(full==NULL) { 75085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("could not create date time instance"); 751b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 752b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 753b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString expected("March 1, 2000 1:23:45 AM "); 754b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int32_t i = 0; i < strings_length;++i) { 755b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* text = strings[i]; 756b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int32_t j = 0; j < looks_length;++j) { 757b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat::EStyle dateLook = looks[j]; 758b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int32_t k = 0; k < looks_length;++k) { 759b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat::EStyle timeLook = looks[k]; 760b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *df = DateFormat::createDateTimeInstance(dateLook, timeLook); 761b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (df == NULL){ 762b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dataerrln("Error calling DateFormat::createDateTimeInstance()"); 763b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru continue; 764b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 765b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString prefix = UnicodeString(text) + ", " + dateLook + "/" + timeLook + ": "; 766b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 767b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate when = df->parse(text, status); 768b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (when == 0 && U_SUCCESS(status)) { 769b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln(prefix + "SHOULD NOT HAPPEN: parse returned 0."); 770b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru continue; 771b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 772b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_SUCCESS(status)) 773b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 774b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString format; 775b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full->format(when, format); 776b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(prefix + "OK: " + format); 777b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (0!=format.compareBetween(0, expected.length(), expected, 0, expected.length())) 778b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Expected " + expected + " got " + format); 779b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 780b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 781b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(ParseException e) { 782b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else 783b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 784b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 785b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(StringIndexOutOfBoundsException e) { 786b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // errln(prefix + "SHOULD NOT HAPPEN: " + (int)status); 787b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 788b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete df; 789b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 790b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 791b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 792b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete full; 793b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 794b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 795b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 796b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 797b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char* const parseFormats[] = { 798b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM d, yyyy", 799b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM d yyyy", 800b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "M/d/yy", 801b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "d MMMM, yyyy", 802b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "d MMMM yyyy", 803b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "d MMMM", 804b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM d", 805b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy", 806b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "h:mm a MMMM d, yyyy" 807b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 808b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 809b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char* const inputStrings[] = { 810b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "bogus string", 0, 0, 0, 0, 0, 0, 0, 0, 0, 811b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "April 1, 1997", "April 1, 1997", 0, 0, 0, 0, 0, "April 1", 0, 0, 812b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "Jan 1, 1970", "January 1, 1970", 0, 0, 0, 0, 0, "January 1", 0, 0, 813b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "Jan 1 2037", 0, "January 1 2037", 0, 0, 0, 0, "January 1", 0, 0, 814b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "1/1/70", 0, 0, "1/1/70", 0, 0, 0, 0, "0001", 0, 815b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "5 May 1997", 0, 0, 0, 0, "5 May 1997", "5 May", 0, "0005", 0, 816b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "16 May", 0, 0, 0, 0, 0, "16 May", 0, "0016", 0, 817b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "April 30", 0, 0, 0, 0, 0, 0, "April 30", 0, 0, 818b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "1998", 0, 0, 0, 0, 0, 0, 0, "1998", 0, 819b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "1", 0, 0, 0, 0, 0, 0, 0, "0001", 0, 820b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "3:00 pm Jan 1, 1997", 0, 0, 0, 0, 0, 0, 0, "0003", "3:00 PM January 1, 1997", 821b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 822b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 823b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 824b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 825b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 826b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify the correct behavior when parsing an array of inputs against an 827b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * array of patterns, with known results. The results are encoded after 828b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the input strings in each row. 829b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 830b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 831b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestBadInput135a() 832b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 833b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 834b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat* dateParse = new SimpleDateFormat(status); 835b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(U_FAILURE(status)) { 83685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errcheckln(status, "Failed creating SimpleDateFormat with %s. Quitting test", u_errorName(status)); 837b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dateParse; 838b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 839b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 840b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* s; 841b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date; 842b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const uint32_t PF_LENGTH = (int32_t)(sizeof(parseFormats)/sizeof(parseFormats[0])); 843b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const uint32_t INPUT_LENGTH = (int32_t)(sizeof(inputStrings)/sizeof(inputStrings[0])); 844b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 845b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateParse->applyPattern("d MMMM, yyyy"); 846b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateParse->adoptTimeZone(TimeZone::createDefault()); 847b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru s = "not parseable"; 848b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString thePat; 849b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(UnicodeString("Trying to parse \"") + s + "\" with " + dateParse->toPattern(thePat)); 850b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 851b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru date = dateParse->parse(s, status); 852b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_SUCCESS(status)) 853b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Expected exception during parse"); 854b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 855b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(Exception ex) { 856b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else 857b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Exception during parse: " + (int32_t)status); 858b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 859b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 860b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (uint32_t i = 0; i < INPUT_LENGTH; i += (PF_LENGTH + 1)) { 861b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition parsePosition(0); 862b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString s( inputStrings[i]); 863b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (uint32_t index = 0; index < PF_LENGTH;++index) { 864b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* expected = inputStrings[i + 1 + index]; 865b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateParse->applyPattern(parseFormats[index]); 866b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateParse->adoptTimeZone(TimeZone::createDefault()); 867b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 868b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru parsePosition.setIndex(0); 869b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru date = dateParse->parse(s, parsePosition); 870b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (parsePosition.getIndex() != 0) { 871b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString s1, s2; 872b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru s.extract(0, parsePosition.getIndex(), s1); 873b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru s.extract(parsePosition.getIndex(), s.length(), s2); 874b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (date == 0) { 875b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"ERROR: null result fmt=\"" + 876b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru parseFormats[index] + 877b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "\" pos=" + parsePosition.getIndex() + " " + 878b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru s1 + "|" + s2); 879b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 880b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else { 881b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result; 882b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ((DateFormat*)dateParse)->format(date, result); 883b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Parsed \"" + s + "\" using \"" + dateParse->toPattern(thePat) + "\" to: " + result); 884b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (expected == 0) 885b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Expected parse failure"); 886b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else if (!(result == expected)) 887b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln(UnicodeString("FAIL: Expected ") + expected); 888b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 889b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 890b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else if (expected != 0) { 891b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln(UnicodeString("FAIL: Expected ") + expected + " from \"" + 892b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru s + "\" with \"" + dateParse->toPattern(thePat) + "\""); 893b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 894b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 895b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(Exception ex) { 896b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 897b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"An exception was thrown during parse: " + (int32_t)status); 898b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 899b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 900b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 901b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dateParse; 902b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 903b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 904b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 905b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 906b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 907b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 908b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 909b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the parsing of two-digit years. 910b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 911b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 912b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestTwoDigitYear() 913b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 914b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 915b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat fmt("dd/MM/yy", Locale::getUK(), ec); 916b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(ec)) { 91785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errcheckln(ec, "FAIL: SimpleDateFormat constructor - %s", u_errorName(ec)); 918b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 919b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 920b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru parse2DigitYear(fmt, "5/6/17", date(117, UCAL_JUNE, 5)); 921b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru parse2DigitYear(fmt, "4/6/34", date(34, UCAL_JUNE, 4)); 922b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 923b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 924b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 925b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 926b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 927b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::parse2DigitYear(DateFormat& fmt, const char* str, UDate expected) 928b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 929b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 930b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 931b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d = fmt.parse(str, status); 932b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString thePat; 933b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(UnicodeString("Parsing \"") + str + "\" with " + ((SimpleDateFormat*)&fmt)->toPattern(thePat) + 934b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru " => " + dateToString(d)); 935b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (d != expected) errln((UnicodeString)"FAIL: Expected " + expected); 936b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 937b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(ParseException e) { 938b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 939b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Got exception"); 940b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 941b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 942b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 943b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 944b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 945b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 946b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the formatting of time zones. 947b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 948b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 949b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestDateFormatZone061() 950b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 951b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 952b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date; 953b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *formatter; 954b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru date= 859248000000.0; 955b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Date 1997/3/25 00:00 GMT: " + date); 956b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru formatter = new SimpleDateFormat((UnicodeString)"dd-MMM-yyyyy HH:mm", Locale::getUK(), status); 957b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(U_FAILURE(status)) { 95885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errcheckln(status, "Failed creating SimpleDateFormat with %s. Quitting test", u_errorName(status)); 959b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete formatter; 960b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 961b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 962b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru formatter->adoptTimeZone(TimeZone::createTimeZone("GMT")); 963b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString temp; formatter->format(date, temp); 964b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Formatted in GMT to: " + temp); 965b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 966b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate tempDate = formatter->parse(temp, status); 967b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Parsed to: " + dateToString(tempDate)); 968b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (tempDate != date) errln((UnicodeString)"FAIL: Expected " + dateToString(date)); 969b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 970b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(Throwable t) { 971b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 972b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"Date Formatter throws: " + (int32_t)status); 973b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 974b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete formatter; 975b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 976b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 977b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 978b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 979b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 980b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the formatting of time zones. 981b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 982b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 983b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestDateFormatZone146() 984b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 985b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone *saveDefault = TimeZone::createDefault(); 986b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 987b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 988b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone *thedefault = TimeZone::createTimeZone("GMT"); 989b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone::setDefault(*thedefault); 990b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // java.util.Locale.setDefault(new java.util.Locale("ar", "", "")); 991b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 992b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // check to be sure... its GMT all right 993b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone *testdefault = TimeZone::createDefault(); 994b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString testtimezone; 995b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru testdefault->getID(testtimezone); 996b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (testtimezone == "GMT") 997b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("Test timezone = " + testtimezone); 998b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else 999b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("Test timezone should be GMT, not " + testtimezone); 1000b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1001b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 1002b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // now try to use the default GMT time zone 1003b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru GregorianCalendar *greenwichcalendar = 1004b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru new GregorianCalendar(1997, 3, 4, 23, 0, status); 1005b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru failure(status, "new GregorianCalendar"); 1006b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //*****************************greenwichcalendar.setTimeZone(TimeZone.getDefault()); 1007b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //greenwichcalendar.set(1997, 3, 4, 23, 0); 1008b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // try anything to set hour to 23:00 !!! 1009b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru greenwichcalendar->set(UCAL_HOUR_OF_DAY, 23); 1010b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // get time 1011b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate greenwichdate = greenwichcalendar->getTime(status); 1012b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // format every way 1013b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString DATA [] = { 1014b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString("simple format: "), UnicodeString("04/04/97 23:00 GMT+00:00"), 1015b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString("MM/dd/yy HH:mm z"), 1016b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString("full format: "), UnicodeString("Friday, April 4, 1997 11:00:00 o'clock PM GMT+00:00"), 1017b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString("EEEE, MMMM d, yyyy h:mm:ss 'o''clock' a z"), 1018b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString("long format: "), UnicodeString("April 4, 1997 11:00:00 PM GMT+00:00"), 1019b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString("MMMM d, yyyy h:mm:ss a z"), 1020b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString("default format: "), UnicodeString("04-Apr-97 11:00:00 PM"), 1021b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString("dd-MMM-yy h:mm:ss a"), 1022b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString("short format: "), UnicodeString("4/4/97 11:00 PM"), 1023b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString("M/d/yy h:mm a") 1024b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1025b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t DATA_length = (int32_t)(sizeof(DATA) / sizeof(DATA[0])); 1026b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1027b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int32_t i=0; i<DATA_length; i+=3) { 1028b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *fmt = new SimpleDateFormat(DATA[i+2], Locale::getEnglish(), status); 1029b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(failure(status, "new SimpleDateFormat")) break; 1030b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt->setCalendar(*greenwichcalendar); 1031b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result; 1032b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru result = fmt->format(greenwichdate, result); 1033b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(DATA[i] + result); 1034b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (result != DATA[i+1]) 1035b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: Expected " + DATA[i+1] + ", got " + result); 1036b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmt; 1037b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1038b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 1039b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //finally { 1040b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone::adoptDefault(saveDefault); 1041b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 1042b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete testdefault; 1043b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete greenwichcalendar; 1044b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete thedefault; 1045b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1046b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1047b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1048b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1049b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 1050b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1051b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1052b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the formatting of dates in different locales. 1053b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1054b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 1055b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestLocaleDateFormat() // Bug 495 1056b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1057b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate testDate = date(97, UCAL_SEPTEMBER, 15); 1058b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *dfFrench = DateFormat::createDateTimeInstance(DateFormat::FULL, 1059b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat::FULL, Locale::getFrench()); 1060b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *dfUS = DateFormat::createDateTimeInstance(DateFormat::FULL, 1061b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat::FULL, Locale::getUS()); 106285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString expectedFRENCH ( "lundi 15 septembre 1997 00:00:00 heure avanc\\u00E9e du Pacifique", -1, US_INV ); 1063b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectedFRENCH = expectedFRENCH.unescape(); 1064b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //UnicodeString expectedUS ( "Monday, September 15, 1997 12:00:00 o'clock AM PDT" ); 106585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString expectedUS ( "Monday, September 15, 1997 12:00:00 AM Pacific Daylight Time" ); 1066b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Date set to : " + dateToString(testDate)); 1067b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString out; 1068b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (dfUS == NULL || dfFrench == NULL){ 1069b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dataerrln("Error calling DateFormat::createDateTimeInstance)"); 1070b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dfUS; 1071b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dfFrench; 1072b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1073b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1074b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1075b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dfFrench->format(testDate, out); 1076b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Date Formated with French Locale " + out); 1077b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(out == expectedFRENCH)) 1078b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Expected " + expectedFRENCH); 1079b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru out.truncate(0); 1080b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dfUS->format(testDate, out); 1081b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Date Formated with US Locale " + out); 1082b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(out == expectedUS)) 1083b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Expected " + expectedUS); 1084b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dfUS; 1085b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dfFrench; 1086b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1087b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1088b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1089b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test DateFormat(Calendar) API 1090b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1091b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestDateFormatCalendar() { 1092b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *date=0, *time=0, *full=0; 1093b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Calendar *cal=0; 1094b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString str; 1095b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition pos; 1096b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate when; 1097b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 1098b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1099b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Create a formatter for date fields. */ 1100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru date = DateFormat::createDateInstance(DateFormat::kShort, Locale::getUS()); 1101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (date == NULL) { 110285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("FAIL: createDateInstance failed"); 1103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Create a formatter for time fields. */ 1107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru time = DateFormat::createTimeInstance(DateFormat::kShort, Locale::getUS()); 1108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (time == NULL) { 1109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: createTimeInstance failed"); 1110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Create a full format for output */ 1114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full = DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, 1115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale::getUS()); 1116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (full == NULL) { 1117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: createInstance failed"); 1118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Create a calendar */ 1122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru cal = Calendar::createInstance(Locale::getUS(), ec); 1123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (cal == NULL || U_FAILURE(ec)) { 1124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Calendar::createInstance failed with " + 1125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru u_errorName(ec)); 1126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Parse the date */ 1130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru cal->clear(); 1131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru str = UnicodeString("4/5/2001", ""); 1132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru pos.setIndex(0); 1133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru date->parse(str, *cal, pos); 1134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (pos.getIndex() != str.length()) { 1135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: DateFormat::parse(4/5/2001) failed at " + 1136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru pos.getIndex()); 1137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Parse the time */ 1141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru str = UnicodeString("5:45 PM", ""); 1142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru pos.setIndex(0); 1143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru time->parse(str, *cal, pos); 1144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (pos.getIndex() != str.length()) { 1145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: DateFormat::parse(17:45) failed at " + 1146b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru pos.getIndex()); 1147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Check result */ 1151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru when = cal->getTime(ec); 1152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(ec)) { 1153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: cal->getTime() failed with " + u_errorName(ec)); 1154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru str.truncate(0); 1157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full->format(when, str); 1158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Thursday, April 5, 2001 5:45:00 PM PDT 986517900000 1159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (when == 986517900000.0) { 1160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("Ok: Parsed result: " + str); 1161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 1162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: Parsed result: " + str + ", exp 4/5/2001 5:45 PM"); 1163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru FAIL: 1166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete date; 1167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete time; 1168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete full; 1169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete cal; 1170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test DateFormat's parsing of space characters. See jitterbug 1916. 1174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestSpaceParsing() { 1176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* DATA[] = { 1177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1178b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // pattern, input, expected parse or NULL if expect parse failure 1180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM d yy", " 04 05 06", NULL, // MMMM wants Apr/April 1181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "04 05 06", NULL, 1182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MM d yy", " 04 05 06", "2006 04 05 00:00:00", 1183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "04 05 06", "2006 04 05 00:00:00", 1184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM d yy", " Apr 05 06", "2006 04 05 00:00:00", 1185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "Apr 05 06", "2006 04 05 00:00:00", 1186b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1187b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t DATA_len = sizeof(DATA)/sizeof(DATA[0]); 1188b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1189b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectParse(DATA, DATA_len, Locale("en")); 1190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1192b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1193b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test handling of "HHmmss" pattern. 1194b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1195b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestExactCountFormat() { 1196b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* DATA[] = { 1197b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1198b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1199b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // pattern, input, expected parse or NULL if expect parse failure 1200b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "HHmmss", "123456", "1970 01 01 12:34:56", 1201b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "12345", "1970 01 01 01:23:45", 1202b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "1234", NULL, 1203b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "00-05", NULL, 1204b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "12-34", NULL, 1205b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "00+05", NULL, 1206b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ahhmm", "PM730", "1970 01 01 19:30:00", 1207b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1208b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t DATA_len = sizeof(DATA)/sizeof(DATA[0]); 1209b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1210b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectParse(DATA, DATA_len, Locale("en")); 1211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test handling of white space. 1215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestWhiteSpaceParsing() { 1217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* DATA[] = { 1218b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd", 1219b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1220b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // pattern, input, expected parse or null if expect parse failure 1221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1222b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Pattern space run should parse input text space run 1223b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MM d yy", " 04 01 03", "2003 04 01", 1224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, " 04 01 03 ", "2003 04 01", 1225b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1226b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t DATA_len = sizeof(DATA)/sizeof(DATA[0]); 1227b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1228b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectParse(DATA, DATA_len, Locale("en")); 1229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1230b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1231b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1232b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestInvalidPattern() { 1233b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 1234b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat f(UnicodeString("Yesterday"), ec); 1235b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(ec); 1236b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString out; 1237b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru FieldPosition pos; 1238b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru f.format((UDate)0, out, pos); 1239b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(out); 1240b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // The bug is that the call to format() will crash. By not 1241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // crashing, the test passes. 1242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestGreekMay() { 1245b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 1246b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date = -9896080848000.0; 1247b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat fmt("EEEE, dd MMMM yyyy h:mm:ss a", Locale("el", "", ""), ec); 1248b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!assertSuccess("SimpleDateFormat::ct", ec)) return; 1249b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString str; 1250b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.format(date, str); 1251b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition pos(0); 1252b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d2 = fmt.parse(str, pos); 1253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (date != d2) { 1254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: unable to parse strings where case-folding changes length"); 1255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1256b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1258b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestStandAloneMonths() 1259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1260b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *EN_DATA[] = { 1261b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1262b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1263b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1264b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1265b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy LLLL dd H:mm:ss", "F", "2004 03 10 16:36:31", "2004 March 10 16:36:31", 1266b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1267b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1268b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 01 01 0:00:00", "January", "1970 01 01 0:00:00", 1269b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 02 01 0:00:00", "February", "1970 02 01 0:00:00", 1270b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 03 01 0:00:00", "March", "1970 03 01 0:00:00", 1271b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 04 01 0:00:00", "April", "1970 04 01 0:00:00", 1272b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 05 01 0:00:00", "May", "1970 05 01 0:00:00", 1273b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 06 01 0:00:00", "June", "1970 06 01 0:00:00", 1274b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 07 01 0:00:00", "July", "1970 07 01 0:00:00", 1275b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 08 01 0:00:00", "August", "1970 08 01 0:00:00", 1276b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 09 01 0:00:00", "September", "1970 09 01 0:00:00", 1277b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 10 01 0:00:00", "October", "1970 10 01 0:00:00", 1278b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 11 01 0:00:00", "November", "1970 11 01 0:00:00", 1279b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 12 01 0:00:00", "December", "1970 12 01 0:00:00", 1280b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1281b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 01 01 0:00:00", "Jan", "1970 01 01 0:00:00", 1282b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 02 01 0:00:00", "Feb", "1970 02 01 0:00:00", 1283b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 03 01 0:00:00", "Mar", "1970 03 01 0:00:00", 1284b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 04 01 0:00:00", "Apr", "1970 04 01 0:00:00", 1285b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 05 01 0:00:00", "May", "1970 05 01 0:00:00", 1286b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 06 01 0:00:00", "Jun", "1970 06 01 0:00:00", 1287b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 07 01 0:00:00", "Jul", "1970 07 01 0:00:00", 1288b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 08 01 0:00:00", "Aug", "1970 08 01 0:00:00", 1289b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 09 01 0:00:00", "Sep", "1970 09 01 0:00:00", 1290b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 10 01 0:00:00", "Oct", "1970 10 01 0:00:00", 1291b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 11 01 0:00:00", "Nov", "1970 11 01 0:00:00", 1292b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 12 01 0:00:00", "Dec", "1970 12 01 0:00:00", 1293b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1294b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1295b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *CS_DATA[] = { 1296b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1297b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1298b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1299b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1300b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy LLL dd H:mm:ss", "fp", "2004 04 10 16:36:31", "2004 4. 10 16:36:31", "2004 04 10 16:36:31", 1301b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy LLLL dd H:mm:ss", "F", "2004 04 10 16:36:31", "2004 duben 10 16:36:31", 1302b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MMMM dd H:mm:ss", "F", "2004 04 10 16:36:31", "2004 dubna 10 16:36:31", 1303b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1304b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1305b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1306b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 01 01 0:00:00", "leden", "1970 01 01 0:00:00", 1307b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 02 01 0:00:00", "\\u00FAnor", "1970 02 01 0:00:00", 1308b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 03 01 0:00:00", "b\\u0159ezen", "1970 03 01 0:00:00", 1309b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 04 01 0:00:00", "duben", "1970 04 01 0:00:00", 1310b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 05 01 0:00:00", "kv\\u011Bten", "1970 05 01 0:00:00", 1311b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 06 01 0:00:00", "\\u010Derven", "1970 06 01 0:00:00", 1312b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 07 01 0:00:00", "\\u010Dervenec", "1970 07 01 0:00:00", 1313b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 08 01 0:00:00", "srpen", "1970 08 01 0:00:00", 1314b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 09 01 0:00:00", "z\\u00E1\\u0159\\u00ED", "1970 09 01 0:00:00", 1315b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 10 01 0:00:00", "\\u0159\\u00EDjen", "1970 10 01 0:00:00", 1316b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 11 01 0:00:00", "listopad", "1970 11 01 0:00:00", 1317b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 12 01 0:00:00", "prosinec", "1970 12 01 0:00:00", 1318b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1319b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 01 01 0:00:00", "1.", "1970 01 01 0:00:00", 1320b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 02 01 0:00:00", "2.", "1970 02 01 0:00:00", 1321b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 03 01 0:00:00", "3.", "1970 03 01 0:00:00", 1322b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 04 01 0:00:00", "4.", "1970 04 01 0:00:00", 1323b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 05 01 0:00:00", "5.", "1970 05 01 0:00:00", 1324b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 06 01 0:00:00", "6.", "1970 06 01 0:00:00", 1325b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 07 01 0:00:00", "7.", "1970 07 01 0:00:00", 1326b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 08 01 0:00:00", "8.", "1970 08 01 0:00:00", 1327b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 09 01 0:00:00", "9.", "1970 09 01 0:00:00", 1328b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 10 01 0:00:00", "10.", "1970 10 01 0:00:00", 1329b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 11 01 0:00:00", "11.", "1970 11 01 0:00:00", 1330b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 12 01 0:00:00", "12.", "1970 12 01 0:00:00", 1331b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1332b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1333b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(EN_DATA, ARRAY_SIZE(EN_DATA), Locale("en", "", "")); 1334b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(CS_DATA, ARRAY_SIZE(CS_DATA), Locale("cs", "", "")); 1335b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1336b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1337b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestStandAloneDays() 1338b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1339b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *EN_DATA[] = { 1340b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1341b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1342b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 04 0:00:00", "Sunday", "1970 01 04 0:00:00", 1343b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 05 0:00:00", "Monday", "1970 01 05 0:00:00", 1344b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 06 0:00:00", "Tuesday", "1970 01 06 0:00:00", 1345b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 07 0:00:00", "Wednesday", "1970 01 07 0:00:00", 1346b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 01 0:00:00", "Thursday", "1970 01 01 0:00:00", 1347b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 02 0:00:00", "Friday", "1970 01 02 0:00:00", 1348b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 03 0:00:00", "Saturday", "1970 01 03 0:00:00", 1349b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1350b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 04 0:00:00", "Sun", "1970 01 04 0:00:00", 1351b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 05 0:00:00", "Mon", "1970 01 05 0:00:00", 1352b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 06 0:00:00", "Tue", "1970 01 06 0:00:00", 1353b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 07 0:00:00", "Wed", "1970 01 07 0:00:00", 1354b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 01 0:00:00", "Thu", "1970 01 01 0:00:00", 1355b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 02 0:00:00", "Fri", "1970 01 02 0:00:00", 1356b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 03 0:00:00", "Sat", "1970 01 03 0:00:00", 1357b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1358b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1359b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *CS_DATA[] = { 1360b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1361b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1362b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 04 0:00:00", "ned\\u011Ble", "1970 01 04 0:00:00", 1363b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 05 0:00:00", "pond\\u011Bl\\u00ED", "1970 01 05 0:00:00", 1364b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 06 0:00:00", "\\u00FAter\\u00FD", "1970 01 06 0:00:00", 1365b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 07 0:00:00", "st\\u0159eda", "1970 01 07 0:00:00", 1366b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 01 0:00:00", "\\u010Dtvrtek", "1970 01 01 0:00:00", 1367b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 02 0:00:00", "p\\u00E1tek", "1970 01 02 0:00:00", 1368b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 03 0:00:00", "sobota", "1970 01 03 0:00:00", 1369b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1370b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 04 0:00:00", "ne", "1970 01 04 0:00:00", 1371b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 05 0:00:00", "po", "1970 01 05 0:00:00", 1372b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 06 0:00:00", "\\u00FAt", "1970 01 06 0:00:00", 1373b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 07 0:00:00", "st", "1970 01 07 0:00:00", 1374b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 01 0:00:00", "\\u010Dt", "1970 01 01 0:00:00", 1375b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 02 0:00:00", "p\\u00E1", "1970 01 02 0:00:00", 1376b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 03 0:00:00", "so", "1970 01 03 0:00:00", 1377b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1378b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1379b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(EN_DATA, ARRAY_SIZE(EN_DATA), Locale("en", "", "")); 1380b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(CS_DATA, ARRAY_SIZE(CS_DATA), Locale("cs", "", "")); 1381b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1382b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1383b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestNarrowNames() 1384b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1385b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *EN_DATA[] = { 1386b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1387b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1388b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MMMMM dd H:mm:ss", "2004 03 10 16:36:31", "2004 M 10 16:36:31", 1389b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy LLLLL dd H:mm:ss", "2004 03 10 16:36:31", "2004 M 10 16:36:31", 1390b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1391b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 01 01 0:00:00", "J", 1392b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 02 01 0:00:00", "F", 1393b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 03 01 0:00:00", "M", 1394b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 04 01 0:00:00", "A", 1395b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 05 01 0:00:00", "M", 1396b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 06 01 0:00:00", "J", 1397b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 07 01 0:00:00", "J", 1398b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 08 01 0:00:00", "A", 1399b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 09 01 0:00:00", "S", 1400b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 10 01 0:00:00", "O", 1401b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 11 01 0:00:00", "N", 1402b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 12 01 0:00:00", "D", 1403b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1404b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 01 01 0:00:00", "J", 1405b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 02 01 0:00:00", "F", 1406b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 03 01 0:00:00", "M", 1407b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 04 01 0:00:00", "A", 1408b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 05 01 0:00:00", "M", 1409b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 06 01 0:00:00", "J", 1410b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 07 01 0:00:00", "J", 1411b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 08 01 0:00:00", "A", 1412b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 09 01 0:00:00", "S", 1413b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 10 01 0:00:00", "O", 1414b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 11 01 0:00:00", "N", 1415b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 12 01 0:00:00", "D", 1416b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1417b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 04 0:00:00", "S", 1418b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 05 0:00:00", "M", 1419b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 06 0:00:00", "T", 1420b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 07 0:00:00", "W", 1421b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 01 0:00:00", "T", 1422b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 02 0:00:00", "F", 1423b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 03 0:00:00", "S", 1424b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1425b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 04 0:00:00", "S", 1426b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 05 0:00:00", "M", 1427b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 06 0:00:00", "T", 1428b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 07 0:00:00", "W", 1429b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 01 0:00:00", "T", 1430b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 02 0:00:00", "F", 1431b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 03 0:00:00", "S", 1432b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1433b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1434b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *CS_DATA[] = { 1435b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1436b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1437b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy LLLLL dd H:mm:ss", "2004 04 10 16:36:31", "2004 d 10 16:36:31", 1438b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MMMMM dd H:mm:ss", "2004 04 10 16:36:31", "2004 d 10 16:36:31", 1439b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1440b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 01 01 0:00:00", "l", 1441b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 02 01 0:00:00", "\\u00FA", 1442b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 03 01 0:00:00", "b", 1443b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 04 01 0:00:00", "d", 1444b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 05 01 0:00:00", "k", 1445b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 06 01 0:00:00", "\\u010D", 1446b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 07 01 0:00:00", "\\u010D", 1447b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 08 01 0:00:00", "s", 1448b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 09 01 0:00:00", "z", 1449b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 10 01 0:00:00", "\\u0159", 1450b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 11 01 0:00:00", "l", 1451b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 12 01 0:00:00", "p", 1452b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1453b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 01 01 0:00:00", "l", 1454b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 02 01 0:00:00", "\\u00FA", 1455b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 03 01 0:00:00", "b", 1456b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 04 01 0:00:00", "d", 1457b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 05 01 0:00:00", "k", 1458b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 06 01 0:00:00", "\\u010D", 1459b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 07 01 0:00:00", "\\u010D", 1460b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 08 01 0:00:00", "s", 1461b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 09 01 0:00:00", "z", 1462b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 10 01 0:00:00", "\\u0159", 1463b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 11 01 0:00:00", "l", 1464b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 12 01 0:00:00", "p", 1465b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1466b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 04 0:00:00", "N", 1467b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 05 0:00:00", "P", 1468b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 06 0:00:00", "\\u00DA", 1469b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 07 0:00:00", "S", 1470b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 01 0:00:00", "\\u010C", 1471b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 02 0:00:00", "P", 1472b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 03 0:00:00", "S", 1473b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1474b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 04 0:00:00", "N", 1475b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 05 0:00:00", "P", 1476b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 06 0:00:00", "\\u00DA", 1477b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 07 0:00:00", "S", 1478b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 01 0:00:00", "\\u010C", 1479b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 02 0:00:00", "P", 1480b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 03 0:00:00", "S", 1481b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1482b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1483b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectFormat(EN_DATA, ARRAY_SIZE(EN_DATA), Locale("en", "", "")); 1484b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectFormat(CS_DATA, ARRAY_SIZE(CS_DATA), Locale("cs", "", "")); 1485b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1486b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1487b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestEras() 1488b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1489b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *EN_DATA[] = { 1490b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd", 1491b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1492b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy G", "fp", "1951 07 17", "July 17 1951 AD", "1951 07 17", 1493b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy GG", "fp", "1951 07 17", "July 17 1951 AD", "1951 07 17", 1494b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy GGG", "fp", "1951 07 17", "July 17 1951 AD", "1951 07 17", 1495b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy GGGG", "fp", "1951 07 17", "July 17 1951 Anno Domini", "1951 07 17", 1496b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1497b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy G", "fp", "-438 07 17", "July 17 0439 BC", "-438 07 17", 1498b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy GG", "fp", "-438 07 17", "July 17 0439 BC", "-438 07 17", 1499b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy GGG", "fp", "-438 07 17", "July 17 0439 BC", "-438 07 17", 1500b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy GGGG", "fp", "-438 07 17", "July 17 0439 Before Christ", "-438 07 17", 1501b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1502b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1503b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(EN_DATA, ARRAY_SIZE(EN_DATA), Locale("en", "", "")); 1504b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1505b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1506b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestQuarters() 1507b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1508b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *EN_DATA[] = { 1509b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd", 1510b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1511b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "Q", "fp", "1970 01 01", "1", "1970 01 01", 1512b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "QQ", "fp", "1970 04 01", "02", "1970 04 01", 1513b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "QQQ", "fp", "1970 07 01", "Q3", "1970 07 01", 1514b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "QQQQ", "fp", "1970 10 01", "4th quarter", "1970 10 01", 1515b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1516b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "q", "fp", "1970 01 01", "1", "1970 01 01", 1517b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "qq", "fp", "1970 04 01", "02", "1970 04 01", 1518b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "qqq", "fp", "1970 07 01", "Q3", "1970 07 01", 1519b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "qqqq", "fp", "1970 10 01", "4th quarter", "1970 10 01", 1520b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1521b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1522b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(EN_DATA, ARRAY_SIZE(EN_DATA), Locale("en", "", "")); 1523b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1524b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1525b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1526b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test parsing. Input is an array that starts with the following 1527b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * header: 1528b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1529b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [0] = pattern string to parse [i+2] with 1530b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1531b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * followed by test cases, each of which is 3 array elements: 1532b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1533b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i] = pattern, or NULL to reuse prior pattern 1534b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i+1] = input string 1535b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i+2] = expected parse result (parsed with pattern [0]) 1536b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1537b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If expect parse failure, then [i+2] should be NULL. 1538b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1539b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::expectParse(const char** data, int32_t data_length, 1540b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const Locale& loc) { 1541b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UDate FAIL = (UDate) -1; 1542b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UnicodeString FAIL_STR("parse failure"); 1543b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t i = 0; 1544b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1545b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 1546b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat fmt("", loc, ec); 1547b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat ref(data[i++], loc, ec); 1548b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat gotfmt("G yyyy MM dd HH:mm:ss z", loc, ec); 1549b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(ec)) { 155085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errcheckln(ec, "FAIL: SimpleDateFormat constructor - %s", u_errorName(ec)); 1551b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1552b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1553b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1554b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* currentPat = NULL; 1555b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru while (i<data_length) { 1556b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* pattern = data[i++]; 1557b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* input = data[i++]; 1558b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* expected = data[i++]; 1559b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1560b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ec = U_ZERO_ERROR; 1561b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (pattern != NULL) { 1562b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.applyPattern(pattern); 1563b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru currentPat = pattern; 1564b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1565b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate got = fmt.parse(input, ec); 1566b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString gotstr(FAIL_STR); 1567b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(ec)) { 1568b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru got = FAIL; 1569b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 1570b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru gotstr.remove(); 1571b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru gotfmt.format(got, gotstr); 1572b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1573b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1574b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec2 = U_ZERO_ERROR; 1575b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate exp = FAIL; 1576b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString expstr(FAIL_STR); 1577b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (expected != NULL) { 1578b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expstr = expected; 1579b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru exp = ref.parse(expstr, ec2); 1580b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(ec2)) { 1581b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // This only happens if expected is in wrong format -- 1582b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // should never happen once test is debugged. 1583b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: Internal test error"); 1584b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1585b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1586b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1587b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1588b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (got == exp) { 1589b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Ok: " + input + " x " + 1590b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru currentPat + " => " + gotstr); 1591b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 1592b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: " + input + " x " + 1593b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru currentPat + " => " + gotstr + ", expected " + 1594b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expstr); 1595b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1596b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1597b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1598b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1599b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1600b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test formatting and parsing. Input is an array that starts 1601b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * with the following header: 1602b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1603b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [0] = pattern string to parse [i+2] with 1604b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1605b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * followed by test cases, each of which is 3 array elements: 1606b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1607b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i] = pattern, or null to reuse prior pattern 1608b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i+1] = control string, either "fp", "pf", or "F". 1609b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i+2..] = data strings 1610b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1611b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The number of data strings depends on the control string. 1612b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Examples: 1613b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1614b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 'f': Format date [i+2] (as parsed using pattern [0]) and expect string [i+3]. 1615b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 'p': Parse string [i+3] and expect date [i+4]. 1616b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1617b13da9df870a61b11249bf741347908dbea0edd8Jean-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" 1618b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 'F': Format date [i+2] and expect string [i+3], 1619b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * then parse string [i+3] and expect date [i+2]. 1620b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1621b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1622b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 'p': Parse string [i+2] and expect date [i+3]. 1623b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 'f': Format date [i+3] and expect string [i+4]. 1624b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1625b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::expect(const char** data, int32_t data_length, 1626b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const Locale& loc) { 1627b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t i = 0; 1628b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 1629b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString str, str2; 1630b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat fmt("", loc, ec); 1631b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat ref(data[i++], loc, ec); 1632b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat univ("EE G yyyy MM dd HH:mm:ss.SSS z", loc, ec); 1633b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!assertSuccess("construct SimpleDateFormat", ec)) return; 1634b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1635b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString currentPat; 1636b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru while (i<data_length) { 1637b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* pattern = data[i++]; 1638b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (pattern != NULL) { 1639b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.applyPattern(pattern); 1640b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru currentPat = pattern; 1641b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1642b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1643b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* control = data[i++]; 1644b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1645b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (uprv_strcmp(control, "fp") == 0) { 1646b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // 'f' 1647b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* datestr = data[i++]; 1648b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* string = data[i++]; 1649b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date = ref.parse(ctou(datestr), ec); 1650b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!assertSuccess("parse", ec)) return; 1651b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".format(" + datestr + ")", 1652b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ctou(string), 1653b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.format(date, str.remove())); 1654b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // 'p' 1655b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru datestr = data[i++]; 1656b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru date = ref.parse(ctou(datestr), ec); 1657b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!assertSuccess("parse", ec)) return; 1658b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate parsedate = fmt.parse(ctou(string), ec); 1659b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (assertSuccess((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")", ec)) { 1660b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")", 1661b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(date, str.remove()), 1662b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(parsedate, str2.remove())); 1663b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1664b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1665b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1666b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else if (uprv_strcmp(control, "pf") == 0) { 1667b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // 'p' 1668b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* string = data[i++]; 1669b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* datestr = data[i++]; 1670b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date = ref.parse(ctou(datestr), ec); 1671b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!assertSuccess("parse", ec)) return; 1672b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate parsedate = fmt.parse(ctou(string), ec); 1673b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (assertSuccess((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")", ec)) { 1674b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")", 1675b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(date, str.remove()), 1676b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(parsedate, str2.remove())); 1677b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1678b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // 'f' 1679b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru string = data[i++]; 1680b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".format(" + datestr + ")", 1681b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ctou(string), 1682b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.format(date, str.remove())); 1683b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1684b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1685b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else if (uprv_strcmp(control, "F") == 0) { 1686b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* datestr = data[i++]; 1687b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* string = data[i++]; 1688b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date = ref.parse(ctou(datestr), ec); 1689b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!assertSuccess("parse", ec)) return; 1690b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".format(" + datestr + ")", 1691b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ctou(string), 1692b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.format(date, str.remove())); 1693b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1694b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate parsedate = fmt.parse(string, ec); 1695b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (assertSuccess((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")", ec)) { 1696b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")", 1697b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(date, str.remove()), 1698b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(parsedate, str2.remove())); 1699b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1700b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1701b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1702b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else { 1703b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Invalid control string " + control); 1704b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1705b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1706b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1707b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1708b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1709b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1710b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test formatting. Input is an array that starts 1711b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * with the following header: 1712b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1713b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [0] = pattern string to parse [i+2] with 1714b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1715b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * followed by test cases, each of which is 3 array elements: 1716b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1717b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i] = pattern, or null to reuse prior pattern 1718b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i+1] = data string a 1719b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i+2] = data string b 1720b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1721b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Examples: 1722b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Format date [i+1] and expect string [i+2]. 1723b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1724b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * "y/M/d H:mm:ss.SSSS", "2004/3/10 16:36:31.5679", "2004 03 10 16:36:31.567" 1725b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1726b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::expectFormat(const char** data, int32_t data_length, 1727b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const Locale& loc) { 1728b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t i = 0; 1729b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 1730b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString str, str2; 1731b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat fmt("", loc, ec); 1732b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat ref(data[i++], loc, ec); 1733b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat univ("EE G yyyy MM dd HH:mm:ss.SSS z", loc, ec); 1734b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!assertSuccess("construct SimpleDateFormat", ec)) return; 1735b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1736b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString currentPat; 1737b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1738b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru while (i<data_length) { 1739b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* pattern = data[i++]; 1740b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (pattern != NULL) { 1741b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.applyPattern(pattern); 1742b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru currentPat = pattern; 1743b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1744b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1745b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* datestr = data[i++]; 1746b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* string = data[i++]; 1747b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date = ref.parse(ctou(datestr), ec); 1748b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!assertSuccess("parse", ec)) return; 1749b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".format(" + datestr + ")", 1750b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ctou(string), 1751b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.format(date, str.remove())); 1752b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1753b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1754b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1755b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestGenericTime() { 1756b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // any zone pattern should parse any zone 1757b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const Locale en("en"); 1758b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* ZDATA[] = { 1759b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm zzz", 1760b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // round trip 1761b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm zzzz", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 Pacific Standard Time", 1762b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm zzz", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 PST", 1763b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm vvvv", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 Pacific Time", 1764b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm v", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 PT", 1765b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // non-generic timezone string influences dst offset even if wrong for date/time 1766b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1767b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1768b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1769b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1770b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // generic timezone generates dst offset appropriate for local time 1771b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1772b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1773b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1774b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1775b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // daylight savings time transition edge cases. 1776b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // time to parse does not really exist, PT interpreted as earlier time 1777b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1778b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1779b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1780b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1781b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1782b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1783b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm", "pf", "2005/4/3 2:30", "2005 04 03 03:30 PDT", "2005/4/3 3:30", 1784b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // time to parse is ambiguous, PT interpreted as later time 1785b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1786b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1787b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1788b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1789b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1790b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1791b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1792b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1793b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1794b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1795b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm", "pf", "2004/10/31 1:30", "2004 10 31 01:30 PST", "2004/10/31 1:30", 1796b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1797b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t ZDATA_length = sizeof(ZDATA)/ sizeof(ZDATA[0]); 1798b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(ZDATA, ZDATA_length, en); 1799b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1800b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 1801b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1802b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("cross format/parse tests"); 1803b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString basepat("yy/MM/dd H:mm "); 1804b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat formats[] = { 1805b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat(basepat + "vvv", en, status), 1806b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat(basepat + "vvvv", en, status), 1807b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat(basepat + "zzz", en, status), 1808b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat(basepat + "zzzz", en, status) 1809b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1810b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 1811b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t formats_length = sizeof(formats)/sizeof(formats[0]); 1812b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1813b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString test; 1814b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat univ("yyyy MM dd HH:mm zzz", en, status); 1815b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 1816b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UnicodeString times[] = { 1817b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "2004 01 02 03:04 PST", 1818b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "2004 07 08 09:10 PDT" 1819b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1820b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t times_length = sizeof(times)/sizeof(times[0]); 1821b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int i = 0; i < times_length; ++i) { 1822b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d = univ.parse(times[i], status); 1823b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(UnicodeString("\ntime: ") + d); 1824b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int j = 0; j < formats_length; ++j) { 1825b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru test.remove(); 1826b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru formats[j].format(d, test); 1827b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("\ntest: '" + test + "'"); 1828b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int k = 0; k < formats_length; ++k) { 1829b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate t = formats[k].parse(test, status); 1830b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_SUCCESS(status)) { 1831b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (d != t) { 1832b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: format " + k + 1833b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru " incorrectly parsed output of format " + j + 1834b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru " (" + test + "), returned " + 1835b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateToString(t) + " instead of " + dateToString(d)); 1836b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 1837b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"OK: format " + k + " parsed ok"); 1838b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1839b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else if (status == U_PARSE_ERROR) { 1840b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: format " + k + 1841b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru " could not parse output of format " + j + 1842b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru " (" + test + ")"); 1843b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1844b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1845b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1846b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1847b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1848b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1849b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestGenericTimeZoneOrder() { 1850b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // generic times should parse the same no matter what the placement of the time zone string 1851b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // should work for standard and daylight times 1852b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1853b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* XDATA[] = { 1854b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm zzz", 1855b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // standard time, explicit daylight/standard 1856b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1857b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "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", 1858b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "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", 1859b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1860b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // standard time, generic 1861b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1862b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "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", 1863b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "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", 1864b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1865b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // dahylight time, explicit daylight/standard 1866b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1867b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "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", 1868b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "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", 1869b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1870b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // daylight time, generic 1871b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1872b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "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", 1873b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "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", 1874b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1875b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t XDATA_length = sizeof(XDATA)/sizeof(XDATA[0]); 1876b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale en("en"); 1877b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(XDATA, XDATA_length, en); 1878b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1879b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1880b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestZTimeZoneParsing(void) { 1881b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 1882b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const Locale en("en"); 1883b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString test; 1884b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //SimpleDateFormat univ("yyyy-MM-dd'T'HH:mm Z", en, status); 1885b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat univ("HH:mm Z", en, status); 1886b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const TimeZone *t = TimeZone::getGMT(); 1887b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.setTimeZone(*t); 1888b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1889b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.setLenient(false); 1890b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition pp(0); 1891b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 1892b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru struct { 1893b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString input; 1894b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString expected_result; 1895b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } tests[] = { 1896b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "11:00 -0200", "13:00 +0000" }, 1897b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "11:00 +0200", "09:00 +0000" }, 1898b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "11:00 +0400", "07:00 +0000" }, 1899b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "11:00 +0530", "05:30 +0000" } 1900b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1901b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1902b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result; 1903b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t tests_length = sizeof(tests)/sizeof(tests[0]); 1904b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int i = 0; i < tests_length; ++i) { 1905b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru pp.setIndex(0); 1906b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d = univ.parse(tests[i].input, pp); 1907b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(pp.getIndex() != tests[i].input.length()){ 1908b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("setZoneString() did not succeed. Consumed: %i instead of %i", 1909b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru pp.getIndex(), tests[i].input.length()); 1910b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1911b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1912b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru result.remove(); 1913b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(d, result); 1914b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(result != tests[i].expected_result) { 1915b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("Expected " + tests[i].expected_result 1916b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru + " got " + result); 1917b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1918b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1919b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("SUCCESS: Parsed " + tests[i].input 1920b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru + " got " + result 1921b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru + " expected " + tests[i].expected_result); 1922b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1923b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1924b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1925b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestHost(void) 1926b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1927b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifdef U_WINDOWS 1928b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Win32DateTimeTest::testLocales(this); 1929b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 1930b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1931b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1932b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// Relative Date Tests 1933b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1934b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestRelative(int daysdelta, 1935b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const Locale& loc, 1936b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *expectChars) { 1937b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru char banner[25]; 1938b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru sprintf(banner, "%d", daysdelta); 1939b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString bannerStr(banner, ""); 1940b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1941b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 1942b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1943b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru FieldPosition pos(0); 1944b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString test; 1945b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale en("en"); 1946b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *fullrelative = DateFormat::createDateInstance(DateFormat::kFullRelative, loc); 1947b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1948b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fullrelative == NULL) { 194985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("DateFormat::createDateInstance(DateFormat::kFullRelative, %s) returned NULL", loc.getName()); 1950b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1951b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1952b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1953b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *full = DateFormat::createDateInstance(DateFormat::kFull , loc); 1954b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1955b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (full == NULL) { 1956b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("DateFormat::createDateInstance(DateFormat::kFull, %s) returned NULL", loc.getName()); 1957b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1958b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1959b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1960b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *en_full = DateFormat::createDateInstance(DateFormat::kFull, en); 1961b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1962b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (en_full == NULL) { 1963b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("DateFormat::createDateInstance(DateFormat::kFull, en) returned NULL"); 1964b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1965b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1966b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1967b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *en_fulltime = DateFormat::createDateTimeInstance(DateFormat::kFull,DateFormat::kFull,en); 1968b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1969b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (en_fulltime == NULL) { 1970b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, en) returned NULL"); 1971b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1972b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1973b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1974b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result; 1975b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString normalResult; 1976b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString expect; 1977b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString parseResult; 1978b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1979b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Calendar *c = Calendar::createInstance(status); 1980b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1981b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Today = Today 1982b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru c->setTime(Calendar::getNow(), status); 1983b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(daysdelta != 0) { 1984b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru c->add(Calendar::DATE,daysdelta,status); 1985b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1986b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 1987b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1988b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // calculate the expected string 1989b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(expectChars != NULL) { 1990b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect = expectChars; 1991b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 1992b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full->format(*c, expect, pos); // expected = normal full 1993b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1994b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1995b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fullrelative ->format(*c, result, pos); 1996b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru en_full ->format(*c, normalResult, pos); 1997b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1998b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(result != expect) { 1999b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: Relative Format ["+bannerStr+"] of "+normalResult+" failed, expected "+expect+" but got " + result); 2000b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 2001b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("PASS: Relative Format ["+bannerStr+"] of "+normalResult+" got " + result); 2002b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2003b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2004b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2005b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //verify 2006b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d = fullrelative->parse(result, status); 2007b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 2008b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2009b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString parseFormat; // parse rel->format full 2010b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru en_full->format(d, parseFormat, status); 2011b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2012b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString origFormat; 2013b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru en_full->format(*c, origFormat, pos); 2014b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2015b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(parseFormat!=origFormat) { 2016b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: Relative Parse ["+bannerStr+"] of "+result+" failed, expected "+parseFormat+" but got "+origFormat); 2017b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 2018b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("PASS: Relative Parse ["+bannerStr+"] of "+result+" passed, got "+parseFormat); 2019b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2020b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2021b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete full; 2022b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fullrelative; 2023b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete en_fulltime; 2024b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete en_full; 2025b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete c; 2026b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 2027b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2028b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2029b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestRelative(void) 2030b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 2031b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale en("en"); 2032b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( 0, en, "Today"); 2033b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative(-1, en, "Yesterday"); 2034b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( 1, en, "Tomorrow"); 2035b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( 2, en, NULL); 2036b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( -2, en, NULL); 2037b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( 3, en, NULL); 2038b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( -3, en, NULL); 2039b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( 300, en, NULL); 2040b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( -300, en, NULL); 2041b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 2042b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2043b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestRelativeClone(void) 2044b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 2045b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 2046b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Verify that a cloned formatter gives the same results 2047b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru and is useable after the original has been deleted. 2048b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 2049b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 2050b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale loc("en"); 2051b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate now = Calendar::getNow(); 2052b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *full = DateFormat::createDateInstance(DateFormat::kFullRelative, loc); 2053b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (full == NULL) { 205485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("FAIL: Can't create Relative date instance"); 2055b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 2056b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2057b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result1; 2058b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full->format(now, result1, status); 2059b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Format *fullClone = full->clone(); 2060b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete full; 2061b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full = NULL; 2062b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2063b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result2; 2064b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fullClone->format(now, result2, status); 2065b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 2066b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (result1 != result2) { 2067b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: Clone returned different result from non-clone."); 2068b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2069b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fullClone; 2070b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 2071b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2072b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestHostClone(void) 2073b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 2074b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 2075b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Verify that a cloned formatter gives the same results 2076b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru and is useable after the original has been deleted. 2077b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 2078b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // This is mainly important on Windows. 2079b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 2080b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale loc("en_US@compat=host"); 2081b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate now = Calendar::getNow(); 2082b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *full = DateFormat::createDateInstance(DateFormat::kFull, loc); 2083b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (full == NULL) { 208485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("FAIL: Can't create Relative date instance"); 2085b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 2086b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2087b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result1; 2088b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full->format(now, result1, status); 2089b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Format *fullClone = full->clone(); 2090b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete full; 2091b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full = NULL; 2092b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2093b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result2; 2094b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fullClone->format(now, result2, status); 2095b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 2096b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (result1 != result2) { 2097b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: Clone returned different result from non-clone."); 2098b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2099b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fullClone; 2100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 2101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestTimeZoneDisplayName() 2103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 2104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // This test data was ported from ICU4J. Don't know why the 6th column in there because it's not being 2105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // used currently. 2106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *fallbackTests[][6] = { 2107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 2108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00", "-8:00" }, 2109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "PST", "America/Los_Angeles" }, 2110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "V", "PST", "America/Los_Angeles" }, 2111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "Pacific Standard Time", "America/Los_Angeles" }, 2112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 2113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" }, 2114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "PDT", "America/Los_Angeles" }, 2115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "V", "PDT", "America/Los_Angeles" }, 2116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "Pacific Daylight Time", "America/Los_Angeles" }, 2117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "PT", "America/Los_Angeles" }, 2118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "Pacific Time", "America/Los_Angeles" }, 2119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "VVVV", "United States (Los Angeles)", "America/Los_Angeles" }, 2120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en_GB", "America/Los_Angeles", "2004-01-15T12:00:00Z", "z", "PST", "America/Los_Angeles" }, 2121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "Z", "-0700", "-7:00" }, 2122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" }, 2123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "z", "MST", "America/Phoenix" }, 2124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "V", "MST", "America/Phoenix" }, 2125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "zzzz", "Mountain Standard Time", "America/Phoenix" }, 2126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 2127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" }, 2128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "z", "MST", "America/Phoenix" }, 2129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "V", "MST", "America/Phoenix" }, 2130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "zzzz", "Mountain Standard Time", "America/Phoenix" }, 2131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "v", "MST", "America/Phoenix" }, 2132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "vvvv", "Mountain Standard Time", "America/Phoenix" }, 2133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "VVVV", "United States (Phoenix)", "America/Phoenix" }, 2134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "V", "ART", "-3:00" }, 2139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "Argentina Time", "-3:00" }, 2140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "V", "ART", "-3:00" }, 2144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "Argentina Time", "-3:00" }, 2145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Argentina (Buenos Aires)", "America/Buenos_Aires" }, 2146b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Argentina Time", "America/Buenos_Aires" }, 2147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "VVVV", "Argentina (Buenos Aires)", "America/Buenos_Aires" }, 2148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "V", "ART", "-3:00" }, 2153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "Argentina Time", "-3:00" }, 2154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "V", "ART", "-3:00" }, 2158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "Argentina Time", "-3:00" }, 2159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Argentina (Buenos Aires)", "America/Buenos_Aires" }, 2160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Argentina Time", "America/Buenos_Aires" }, 2161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "VVVV", "Argentina (Buenos Aires)", "America/Buenos_Aires" }, 2162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 2164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "-5:00" }, 2165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-05:00", "-5:00" }, 2166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-01-15T00:00:00Z", "V", "CST (Cuba)", "-5:00" }, 2167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "Cuba Standard Time", "-5:00" }, 2168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 2169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "-4:00" }, 2170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-04:00", "-4:00" }, 2171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "V", "CDT (Cuba)", "-4:00" }, 2172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "Cuba Daylight Time", "-4:00" }, 2173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "v", "Cuba Time", "America/Havana" }, 2174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "Cuba Time", "America/Havana" }, 2175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "VVVV", "Cuba Time", "America/Havana" }, 2176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 2178b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 2179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" }, 2180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "V", "AEDT", "+11:00" }, 2181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "Australian Eastern Daylight Time", "+11:00" }, 2182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 2183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 2184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" }, 2185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "V", "AEST", "+10:00" }, 2186b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "Australian Eastern Standard Time", "+10:00" }, 2187b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "Australia (Sydney)", "Australia/Sydney" }, 2188b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "Eastern Australia Time", "Australia/Sydney" }, 2189b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "VVVV", "Australia (Sydney)", "Australia/Sydney" }, 2190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 2192b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 2193b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" }, 2194b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "V", "AEDT", "+11:00" }, 2195b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "Australian Eastern Daylight Time", "+11:00" }, 2196b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 2197b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 2198b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" }, 2199b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "V", "AEST", "+10:00" }, 2200b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "Australian Eastern Standard Time", "+10:00" }, 2201b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "Australia (Sydney)", "Australia/Sydney" }, 2202b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "Eastern Australia Time", "Australia/Sydney" }, 2203b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "VVVV", "Australia (Sydney)", "Australia/Sydney" }, 2204b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2205b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 2206b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+00:00", "+0:00" }, 2207b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT", "+0:00" }, 2208b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-01-15T00:00:00Z", "V", "GMT", "+0:00" }, 2209b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "Greenwich Mean Time", "+0:00" }, 2210b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 2211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" }, 2212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+01:00", "Europe/London" }, 2213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "V", "BST", "Europe/London" }, 2214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "British Summer Time", "Europe/London" }, 2215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu en.txt has exemplar city for this time zone 2216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "v", "United Kingdom Time", "Europe/London" }, 2217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "United Kingdom Time", "Europe/London" }, 2218b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "VVVV", "United Kingdom Time", "Europe/London" }, 2219b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2220b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2222b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2223b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2225b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2226b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2227b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2228b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-03:00", "-3:00" }, 2229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00" }, 2230b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2231b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // JB#5150 2232b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 2233b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 2234b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+05:30", "+5:30" }, 2235b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "V", "IST", "+5:30" }, 2236b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "India Standard Time", "+5:30" }, 2237b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 2238b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 2239b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+05:30", "+05:30" }, 2240b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "V", "IST", "+05:30" }, 2241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "India Standard Time", "+5:30" }, 2242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "India Time", "Asia/Calcutta" }, 2243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "India Standard Time", "Asia/Calcutta" }, 2244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2245b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // ========== 2246b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2247b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 2248b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00", "-8:00" }, 2249b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-08:00", "-8:00" }, 2250b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "GMT-08:00", "-8:00" }, 2251b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 2252b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" }, 2253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-07:00", "-7:00" }, 2254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "GMT-07:00", "-7:00" }, 2255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "Vereinigte Staaten (Los Angeles)", "America/Los_Angeles" }, 2256b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "Vereinigte Staaten (Los Angeles)", "America/Los_Angeles" }, 2257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2258b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2260b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2261b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2262b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2263b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2264b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2265b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2266b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Argentinien (Buenos Aires)", "America/Buenos_Aires" }, 2267b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Argentinien (Buenos Aires)", "America/Buenos_Aires" }, 2268b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2269b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2270b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2271b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2272b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2273b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2274b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2275b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2276b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2277b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Argentinien (Buenos Aires)", "America/Buenos_Aires" }, 2278b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Argentinien (Buenos Aires)", "America/Buenos_Aires" }, 2279b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2280b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 2281b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "-5:00" }, 2282b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-05:00", "-5:00" }, 2283b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-05:00", "-5:00" }, 2284b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 2285b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "-4:00" }, 2286b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-04:00", "-4:00" }, 2287b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-04:00", "-4:00" }, 2288b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-07-15T00:00:00Z", "v", "Kuba", "America/Havana" }, 2289b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "Kuba", "America/Havana" }, 2290b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // added to test proper fallback of country name 2291b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de_CH", "America/Havana", "2004-07-15T00:00:00Z", "v", "Kuba", "America/Havana" }, 2292b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de_CH", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "Kuba", "America/Havana" }, 2293b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2294b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 2295b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 2296b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" }, 2297b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" }, 2298b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 2299b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 2300b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" }, 2301b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" }, 2302b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "Australien (Sydney)", "Australia/Sydney" }, 2303b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "Australien (Sydney)", "Australia/Sydney" }, 2304b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2305b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 2306b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 2307b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" }, 2308b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" }, 2309b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 2310b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 2311b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" }, 2312b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" }, 2313b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "Australien (Sydney)", "Australia/Sydney" }, 2314b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "Australien (Sydney)", "Australia/Sydney" }, 2315b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2316b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 2317b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+00:00", "+0:00" }, 2318b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT+00:00", "+0:00" }, 2319b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "GMT+00:00", "+0:00" }, 2320b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 2321b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" }, 2322b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+01:00", "+1:00" }, 2323b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+01:00", "+1:00" }, 2324b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Europe/London", "2004-07-15T00:00:00Z", "v", "Vereinigtes K\\u00f6nigreich", "Europe/London" }, 2325b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "Vereinigtes K\\u00f6nigreich", "Europe/London" }, 2326b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2327b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2328b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2329b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2330b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2331b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2332b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2333b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2334b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2335b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-03:00", "-3:00" }, 2336b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00" }, 2337b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2338b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // JB#5150 2339b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 2340b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 2341b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+05:30", "+5:30" }, 2342b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" }, 2343b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 2344b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 2345b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+05:30", "+05:30" }, 2346b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" }, 2347b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "Indien", "Asia/Calcutta" }, 2348b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "Indien", "Asia/Calcutta" }, 2349b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2350b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // ========== 2351b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2352b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 235385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0800", "-8:00" }, 235485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0800", "America/Los_Angeles" }, 2355b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "\\u592a\\u5e73\\u6d0b\\u6807\\u51c6\\u65f6\\u95f4", "America/Los_Angeles" }, 2356b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 235785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0700", "-7:00" }, 235885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0700", "America/Los_Angeles" }, 2359b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "\\u592a\\u5e73\\u6d0b\\u590f\\u4ee4\\u65f6\\u95f4", "America/Los_Angeles" }, 2360b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu zh.txt has exemplar city for this time zone 2361b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "\\u7f8e\\u56fd (\\u6d1b\\u6749\\u77f6)", "America/Los_Angeles" }, 236285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\\u7f8e\\u56fd\\u592a\\u5e73\\u6d0b\\u65f6\\u95f4", "America/Los_Angeles" }, 2363b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2364b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 236585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 236685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 236785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u963f\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "-3:00" }, 2368b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 236985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 237085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 237185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u963f\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "-3:00" }, 2372b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u963f\\u6839\\u5ef7 (\\u5e03\\u5b9c\\u8bfa\\u65af\\u827e\\u5229\\u65af)", "America/Buenos_Aires" }, 237385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u963f\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "America/Buenos_Aires" }, 2374b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2375b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 237685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 237785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 237885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u963f\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "-3:00" }, 2379b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 238085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 238185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 238285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u963f\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "-3:00" }, 2383b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u963f\\u6839\\u5ef7 (\\u5e03\\u5b9c\\u8bfa\\u65af\\u827e\\u5229\\u65af)", "America/Buenos_Aires" }, 238485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u963f\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "America/Buenos_Aires" }, 2385b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2386b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 238785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0500", "-5:00" }, 238885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0500", "-5:00" }, 238985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "\\u53e4\\u5df4\\u6807\\u51c6\\u65f6\\u95f4", "-5:00" }, 2390b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 239185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0400", "-4:00" }, 239285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0400", "-4:00" }, 239385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "\\u53e4\\u5df4\\u590f\\u4ee4\\u65f6\\u95f4", "-4:00" }, 239485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-07-15T00:00:00Z", "v", "\\u53e4\\u5df4\\u65f6\\u95f4", "America/Havana" }, 239585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\\u53e4\\u5df4\\u65f6\\u95f4", "America/Havana" }, 2396b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2397b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 239885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1100", "+11:00" }, 239985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1100", "+11:00" }, 2400b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "\\u6fb3\\u5927\\u5229\\u4e9a\\u4e1c\\u90e8\\u590f\\u4ee4\\u65f6\\u95f4", "+11:00" }, 2401b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 240285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1000", "+10:00" }, 240385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1000", "+10:00" }, 240485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "\\u6fb3\\u5927\\u5229\\u4e9a\\u4e1c\\u90e8\\u6807\\u51c6\\u65f6\\u95f4", "+10:00" }, 2405b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu zh.txt does not have info for this time zone 2406b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\\u6fb3\\u5927\\u5229\\u4e9a (\\u6089\\u5c3c)", "Australia/Sydney" }, 240785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\\u6fb3\\u5927\\u5229\\u4e9a\\u4e1c\\u90e8\\u65f6\\u95f4", "Australia/Sydney" }, 2408b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2409b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 241085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1100", "+11:00" }, 241185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1100", "+11:00" }, 2412b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "\\u6fb3\\u5927\\u5229\\u4e9a\\u4e1c\\u90e8\\u590f\\u4ee4\\u65f6\\u95f4", "+11:00" }, 2413b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 241485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1000", "+10:00" }, 241585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1000", "+10:00" }, 241685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "\\u6fb3\\u5927\\u5229\\u4e9a\\u4e1c\\u90e8\\u6807\\u51c6\\u65f6\\u95f4", "+10:00" }, 2417b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\\u6fb3\\u5927\\u5229\\u4e9a (\\u6089\\u5c3c)", "Australia/Sydney" }, 241885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\\u6fb3\\u5927\\u5229\\u4e9a\\u4e1c\\u90e8\\u65f6\\u95f4", "Australia/Sydney" }, 2419b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2420b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 242185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0000", "+0:00" }, 242285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Europe/London", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0000", "+0:00" }, 2423b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Europe/London", "2004-01-15T00:00:00Z", "V", "GMT", "+0:00" }, 2424b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "\\u683C\\u6797\\u5C3C\\u6CBB\\u6807\\u51C6\\u65F6\\u95F4", "+0:00" }, 2425b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 242685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0100", "+1:00" }, 242785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Europe/London", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0100", "+1:00" }, 2428b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Europe/London", "2004-07-15T00:00:00Z", "V", "BST", "+1:00" }, 242985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0100", "+1:00" }, 243085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Europe/London", "2004-07-15T00:00:00Z", "v", "\\u82f1\\u56fd\\u65f6\\u95f4", "Europe/London" }, 243185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\\u82f1\\u56fd\\u65f6\\u95f4", "Europe/London" }, 243285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Europe/London", "2004-07-15T00:00:00Z", "VVVV", "\\u82f1\\u56fd\\u65f6\\u95f4", "Europe/London" }, 2433b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2434b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 243585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 243685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 243785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 2438b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 243985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 244085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 244185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 244285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 244385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 2444b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2445b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // JB#5150 2446b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 244785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0530", "+5:30" }, 244885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0530", "+5:30" }, 244985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "\\u5370\\u5ea6\\u6807\\u51c6\\u65f6\\u95f4", "+5:30" }, 2450b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 245185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0530", "+5:30" }, 245285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0530", "+05:30" }, 245385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "\\u5370\\u5ea6\\u6807\\u51c6\\u65f6\\u95f4", "+5:30" }, 245485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "\\u5370\\u5ea6\\u65f6\\u95f4", "Asia/Calcutta" }, 245585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\\u5370\\u5ea6\\u6807\\u51c6\\u65f6\\u95f4", "Asia/Calcutta" }, 2456b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2457b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // ========== 2458b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2459b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 2460b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u096e:\\u0966\\u0966", "-8:00" }, 2461b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-\\u0966\\u096e:\\u0966\\u0966", "-8:00" }, 2462b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "GMT-\\u0966\\u096e:\\u0966\\u0966", "-8:00" }, 2463b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 2464b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u096d:\\u0966\\u0966", "-7:00" }, 2465b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-\\u0966\\u096d:\\u0966\\u0966", "-7:00" }, 2466b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "GMT-\\u0966\\u096d:\\u0966\\u0966", "-7:00" }, 246785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "\\u0938\\u0902\\u092f\\u0941\\u0915\\u094d\\u0924 \\u0930\\u093e\\u091c\\u094d\\u092f \\u0905\\u092e\\u0947\\u0930\\u093f\\u0915\\u093e (\\u0932\\u094b\\u0938 \\u090f\\u0902\\u091c\\u093f\\u0932\\u0947\\u0938)", "America/Los_Angeles" }, 246885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\\u0938\\u0902\\u092f\\u0941\\u0915\\u094d\\u0924 \\u0930\\u093e\\u091c\\u094d\\u092f \\u0905\\u092e\\u0947\\u0930\\u093f\\u0915\\u093e (\\u0932\\u094b\\u0938 \\u090f\\u0902\\u091c\\u093f\\u0932\\u0947\\u0938)", "America/Los_Angeles" }, 2469b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2470b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2471b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2472b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2473b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2474b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2475b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2476b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2477b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 247885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u0905\\u0930\\u094d\\u091c\\u0947\\u0928\\u094d\\u091f\\u0940\\u0928\\u093e (\\u092c\\u094d\\u092f\\u0942\\u0928\\u0938 \\u0906\\u092f\\u0930\\u0938)", "America/Buenos_Aires" }, 247985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u0905\\u0930\\u094d\\u091c\\u0947\\u0928\\u094d\\u091f\\u0940\\u0928\\u093e (\\u092c\\u094d\\u092f\\u0942\\u0928\\u0938 \\u0906\\u092f\\u0930\\u0938)", "America/Buenos_Aires" }, 2480b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2481b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2482b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2483b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2484b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2485b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2486b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2487b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2488b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 248985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u0905\\u0930\\u094d\\u091c\\u0947\\u0928\\u094d\\u091f\\u0940\\u0928\\u093e (\\u092c\\u094d\\u092f\\u0942\\u0928\\u0938 \\u0906\\u092f\\u0930\\u0938)", "America/Buenos_Aires" }, 249085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u0905\\u0930\\u094d\\u091c\\u0947\\u0928\\u094d\\u091f\\u0940\\u0928\\u093e (\\u092c\\u094d\\u092f\\u0942\\u0928\\u0938 \\u0906\\u092f\\u0930\\u0938)", "America/Buenos_Aires" }, 2491b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2492b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 2493b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u096b:\\u0966\\u0966", "-5:00" }, 2494b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-\\u0966\\u096b:\\u0966\\u0966", "-5:00" }, 2495b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-\\u0966\\u096b:\\u0966\\u0966", "-5:00" }, 2496b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 2497b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u096a:\\u0966\\u0966", "-4:00" }, 2498b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-\\u0966\\u096a:\\u0966\\u0966", "-4:00" }, 2499b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-\\u0966\\u096a:\\u0966\\u0966", "-4:00" }, 2500b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-07-15T00:00:00Z", "v", "\\u0915\\u094d\\u092f\\u0942\\u092c\\u093e", "America/Havana" }, 2501b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\\u0915\\u094d\\u092f\\u0942\\u092c\\u093e", "America/Havana" }, 2502b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2503b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 2504b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+\\u0967\\u0967:\\u0966\\u0966", "+11:00" }, 2505b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+\\u0967\\u0967:\\u0966\\u0966", "+11:00" }, 2506b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "GMT+\\u0967\\u0967:\\u0966\\u0966", "+11:00" }, 2507b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 2508b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+\\u0967\\u0966:\\u0966\\u0966", "+10:00" }, 2509b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+\\u0967\\u0966:\\u0966\\u0966", "+10:00" }, 2510b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "GMT+\\u0967\\u0966:\\u0966\\u0966", "+10:00" }, 251185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\\u0911\\u0938\\u094d\\u091f\\u094d\\u0930\\u0947\\u0932\\u093f\\u092f\\u093e (\\u0938\\u093f\\u0921\\u0928\\u0940)", "Australia/Sydney" }, 251285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\\u0911\\u0938\\u094d\\u091f\\u094d\\u0930\\u0947\\u0932\\u093f\\u092f\\u093e (\\u0938\\u093f\\u0921\\u0928\\u0940)", "Australia/Sydney" }, 2513b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2514b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 2515b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+\\u0967\\u0967:\\u0966\\u0966", "+11:00" }, 2516b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+\\u0967\\u0967:\\u0966\\u0966", "+11:00" }, 2517b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "GMT+\\u0967\\u0967:\\u0966\\u0966", "+11:00" }, 2518b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 2519b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+\\u0967\\u0966:\\u0966\\u0966", "+10:00" }, 2520b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+\\u0967\\u0966:\\u0966\\u0966", "+10:00" }, 2521b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "GMT+\\u0967\\u0966:\\u0966\\u0966", "+10:00" }, 252285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\\u0911\\u0938\\u094d\\u091f\\u094d\\u0930\\u0947\\u0932\\u093f\\u092f\\u093e (\\u0938\\u093f\\u0921\\u0928\\u0940)", "Australia/Sydney" }, 252385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\\u0911\\u0938\\u094d\\u091f\\u094d\\u0930\\u0947\\u0932\\u093f\\u092f\\u093e (\\u0938\\u093f\\u0921\\u0928\\u0940)", "Australia/Sydney" }, 2524b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2525b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 2526b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+\\u0966\\u0966:\\u0966\\u0966", "+0:00" }, 2527b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT+\\u0966\\u0966:\\u0966\\u0966", "+0:00" }, 2528b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "GMT+\\u0966\\u0966:\\u0966\\u0966", "+0:00" }, 2529b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 2530b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+\\u0966\\u0967:\\u0966\\u0966", "+1:00" }, 2531b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+\\u0966\\u0967:\\u0966\\u0966", "+1:00" }, 2532b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+\\u0966\\u0967:\\u0966\\u0966", "+1:00" }, 2533b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Europe/London", "2004-07-15T00:00:00Z", "v", "\\u092C\\u094D\\u0930\\u093F\\u0924\\u0928", "Europe/London" }, 2534b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\\u092C\\u094D\\u0930\\u093F\\u0924\\u0928", "Europe/London" }, 2535b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2536b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2537b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2538b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2539b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2540b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2541b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2542b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2543b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2544b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2545b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2546b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2547b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 2548b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+\\u0966\\u096B:\\u0969\\u0966", "+5:30" }, 2549b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "IST", "+5:30" }, 2550b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "\\u092D\\u093E\\u0930\\u0924\\u0940\\u092F \\u0938\\u092E\\u092F", "+5:30" }, 2551b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 2552b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+\\u0966\\u096B:\\u0969\\u0966", "+5:30" }, 2553b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "IST", "+05:30" }, 2554b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "\\u092D\\u093E\\u0930\\u0924\\u0940\\u092F \\u0938\\u092E\\u092F", "+5:30" }, 2555b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "IST", "Asia/Calcutta" }, 2556b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\\u092D\\u093E\\u0930\\u0924\\u0940\\u092F \\u0938\\u092E\\u092F", "Asia/Calcutta" }, 2557b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2558b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // ========== 2559b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2560b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 256185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0800", "-8:00" }, 256285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0800", "America/Los_Angeles" }, 2563b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "V", "PST", "America/Los_Angeles" }, 2564b13da9df870a61b11249bf741347908dbea0edd8Jean-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" }, 2565b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 256685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0700", "-7:00" }, 256785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0700", "America/Los_Angeles" }, 2568b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "V", "PDT", "America/Los_Angeles" }, 2569b13da9df870a61b11249bf741347908dbea0edd8Jean-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" }, 2570b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu bg.txt has exemplar city for this time zone 2571b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "\\u0421\\u0410\\u0429 (\\u041b\\u043e\\u0441 \\u0410\\u043d\\u0436\\u0435\\u043b\\u0438\\u0441)", "America/Los_Angeles" }, 2572b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\\u0421\\u0410\\u0429 (\\u041b\\u043e\\u0441 \\u0410\\u043d\\u0436\\u0435\\u043b\\u0438\\u0441)", "America/Los_Angeles" }, 2573b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "VVVV", "\\u0421\\u0410\\u0429 (\\u041b\\u043e\\u0441 \\u0410\\u043d\\u0436\\u0435\\u043b\\u0438\\u0441)", "America/Los_Angeles" }, 2574b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2575b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 257685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 257785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 257885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 2579b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 258085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 258185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 258285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 2583b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u0410\\u0440\\u0436\\u0435\\u043d\\u0442\\u0438\\u043d\\u0430 (\\u0411\\u0443\\u0435\\u043D\\u043E\\u0441 \\u0410\\u0439\\u0440\\u0435\\u0441)", "America/Buenos_Aires" }, 2584b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u0410\\u0440\\u0436\\u0435\\u043d\\u0442\\u0438\\u043d\\u0430 (\\u0411\\u0443\\u0435\\u043D\\u043E\\u0441 \\u0410\\u0439\\u0440\\u0435\\u0441)", "America/Buenos_Aires" }, 2585b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2586b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 258785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 258885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 258985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 2590b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 259185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 259285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 259385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 2594b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu bg.txt does not have info for this time zone 2595b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u0410\\u0440\\u0436\\u0435\\u043d\\u0442\\u0438\\u043d\\u0430 (\\u0411\\u0443\\u0435\\u043D\\u043E\\u0441 \\u0410\\u0439\\u0440\\u0435\\u0441)", "America/Buenos_Aires" }, 2596b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u0410\\u0440\\u0436\\u0435\\u043d\\u0442\\u0438\\u043d\\u0430 (\\u0411\\u0443\\u0435\\u043D\\u043E\\u0441 \\u0410\\u0439\\u0440\\u0435\\u0441)", "America/Buenos_Aires" }, 2597b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2598b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 259985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0500", "-5:00" }, 260085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Havana", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0500", "-5:00" }, 260185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0500", "-5:00" }, 2602b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 260385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0400", "-4:00" }, 260485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Havana", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0400", "-4:00" }, 260585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0400", "-4:00" }, 2606b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Havana", "2004-07-15T00:00:00Z", "v", "\\u041a\\u0443\\u0431\\u0430", "America/Havana" }, 2607b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\\u041a\\u0443\\u0431\\u0430", "America/Havana" }, 2608b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2609b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 261085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1100", "+11:00" }, 261185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1100", "+11:00" }, 261285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1100", "+11:00" }, 2613b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 261485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1000", "+10:00" }, 261585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1000", "+10:00" }, 261685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1000", "+10:00" }, 2617b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\\u0410\\u0432\\u0441\\u0442\\u0440\\u0430\\u043b\\u0438\\u044f (\\u0421\\u0438\\u0434\\u043D\\u0438)", "Australia/Sydney" }, 2618b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\\u0410\\u0432\\u0441\\u0442\\u0440\\u0430\\u043b\\u0438\\u044f (\\u0421\\u0438\\u0434\\u043D\\u0438)", "Australia/Sydney" }, 2619b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2620b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 262185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1100", "+11:00" }, 262285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1100", "+11:00" }, 262385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1100", "+11:00" }, 2624b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 262585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1000", "+10:00" }, 262685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1000", "+10:00" }, 262785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1000", "+10:00" }, 2628b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\\u0410\\u0432\\u0441\\u0442\\u0440\\u0430\\u043b\\u0438\\u044f (\\u0421\\u0438\\u0434\\u043D\\u0438)", "Australia/Sydney" }, 2629b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\\u0410\\u0432\\u0441\\u0442\\u0440\\u0430\\u043b\\u0438\\u044f (\\u0421\\u0438\\u0434\\u043D\\u0438)", "Australia/Sydney" }, 2630b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2631b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 263285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0000", "+0:00" }, 263385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Europe/London", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0000", "+0:00" }, 2634b13da9df870a61b11249bf741347908dbea0edd8Jean-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" }, 2635b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 263685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0100", "+1:00" }, 263785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Europe/London", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0100", "+1:00" }, 263885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0100", "+1:00" }, 2639b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "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", "Europe/London" }, 2640b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "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", "Europe/London" }, 2641b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2642b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 264385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 264485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 264585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 2646b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 264785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 264885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 264985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 265085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 265185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 2652b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2653b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // JB#5150 2654b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 265585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0530", "+5:30" }, 265685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0530", "+5:30" }, 265785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0530", "+5:30" }, 2658b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 265985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0530", "+5:30" }, 266085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0530", "+05:30" }, 266185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0530", "+5:30" }, 2662b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "\\u0418\\u043D\\u0434\\u0438\\u044F", "Asia/Calcutta" }, 2663b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\\u0418\\u043D\\u0434\\u0438\\u044F", "Asia/Calcutta" }, 2664b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // ========== 2665b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2666b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 266785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00", "-8:00" }, 266885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-08:00", "America/Los_Angeles" }, 2669b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "V", "PST", "America/Los_Angeles" }, 267085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "\\u30a2\\u30e1\\u30ea\\u30ab\\u592a\\u5e73\\u6d0b\\u6a19\\u6e96\\u6642", "America/Los_Angeles" }, 267185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-700" }, 267285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" }, 267385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-07:00", "America/Los_Angeles" }, 2674b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "V", "PDT", "America/Los_Angeles" }, 267585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "\\u30a2\\u30e1\\u30ea\\u30ab\\u592a\\u5e73\\u6d0b\\u590f\\u6642\\u9593", "America/Los_Angeles" }, 2676b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu ja.txt has exemplar city for this time zone 2677b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "\\u30A2\\u30E1\\u30EA\\u30AB\\u5408\\u8846\\u56FD (\\u30ed\\u30b5\\u30f3\\u30bc\\u30eb\\u30b9)", "America/Los_Angeles" }, 267885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\\u30A2\\u30E1\\u30EA\\u30AB\\u592A\\u5e73\\u6D0B\\u6642\\u9593", "America/Los_Angeles" }, 2679b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "VVVV", "\\u30A2\\u30E1\\u30EA\\u30AB\\u5408\\u8846\\u56FD (\\u30ed\\u30b5\\u30f3\\u30bc\\u30eb\\u30b9)", "America/Los_Angeles" }, 2680b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2681b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 268285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 268385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 268485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2685b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 268685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 268785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 268885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2689b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu ja.txt does not have info for this time zone 269085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u30a2\\u30eb\\u30bc\\u30f3\\u30c1\\u30f3 (\\u30D6\\u30A8\\u30CE\\u30B9\\u30A2\\u30A4\\u30EC\\u30B9)", "America/Buenos_Aires" }, 269185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u30a2\\u30eb\\u30bc\\u30f3\\u30c1\\u30f3\\u6642\\u9593", "America/Buenos_Aires" }, 2692b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2693b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 269485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 269585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 269685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2697b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 269885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 269985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 270085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 270185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u30a2\\u30eb\\u30bc\\u30f3\\u30c1\\u30f3 (\\u30D6\\u30A8\\u30CE\\u30B9\\u30A2\\u30A4\\u30EC\\u30B9)", "America/Buenos_Aires" }, 270285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u30a2\\u30eb\\u30bc\\u30f3\\u30c1\\u30f3\\u6642\\u9593", "America/Buenos_Aires" }, 2703b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2704b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 270585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "-5:00" }, 270685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-05:00", "-5:00" }, 270785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-05:00", "-5:00" }, 2708b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 270985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "-4:00" }, 271085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-04:00", "-4:00" }, 271185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-04:00", "-4:00" }, 2712b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Havana", "2004-07-15T00:00:00Z", "v", "\\u30ad\\u30e5\\u30fc\\u30d0\\u6642\\u9593", "America/Havana" }, 2713b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\\u30ad\\u30e5\\u30fc\\u30d0\\u6642\\u9593", "America/Havana" }, 2714b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2715b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 271685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 271785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" }, 271885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" }, 2719b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 272085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 272185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" }, 272285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" }, 2723b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu ja.txt does not have info for this time zone 272485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\\u30aa\\u30fc\\u30b9\\u30c8\\u30e9\\u30ea\\u30a2 (\\u30b7\\u30c9\\u30cb\\u30fc)", "Australia/Sydney" }, 272585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\\u30aa\\u30fc\\u30b9\\u30c8\\u30e9\\u30ea\\u30a2 (\\u30b7\\u30c9\\u30cb\\u30fc)", "Australia/Sydney" }, 2726b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2727b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 272885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 272985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" }, 273085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" }, 2731b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 273285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 273385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" }, 273485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" }, 273585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\\u30aa\\u30fc\\u30b9\\u30c8\\u30e9\\u30ea\\u30a2 (\\u30b7\\u30c9\\u30cb\\u30fc)", "Australia/Sydney" }, 273685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\\u30aa\\u30fc\\u30b9\\u30c8\\u30e9\\u30ea\\u30a2 (\\u30b7\\u30c9\\u30cb\\u30fc)", "Australia/Sydney" }, 2737b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2738b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 273985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+00:00", "+0:00" }, 274085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT+00:00", "+0:00" }, 2741b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Europe/London", "2004-01-15T00:00:00Z", "V", "GMT", "+0:00" }, 2742b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "\\u30B0\\u30EA\\u30CB\\u30C3\\u30B8\\u6A19\\u6E96\\u6642", "+0:00" }, 2743b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 274485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" }, 274585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+01:00", "+1:00" }, 274685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Europe/London", "2004-07-15T00:00:00Z", "V", "GMT+01:00", "+1:00" }, 274785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+01:00", "+1:00" }, 2748b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Europe/London", "2004-07-15T00:00:00Z", "v", "\\u30a4\\u30ae\\u30ea\\u30b9\\u6642\\u9593", "Europe/London" }, 2749b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\\u30a4\\u30ae\\u30ea\\u30b9\\u6642\\u9593", "Europe/London" }, 2750b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Europe/London", "2004-07-15T00:00:00Z", "VVVV", "\\u30a4\\u30ae\\u30ea\\u30b9\\u6642\\u9593", "Europe/London" }, 2751b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2752b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 275385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 275485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 275585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2756b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 275785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 275885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 275985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 276085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-03:00", "-3:00" }, 276185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00" }, 2762b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2763b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // JB#5150 2764b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 276585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 276685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+05:30", "+5:30" }, 276785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" }, 2768b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 276985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 277085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+05:30", "+05:30" }, 277185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" }, 2772b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "\\u30A4\\u30F3\\u30C9\\u6642\\u9593", "Asia/Calcutta" }, 2773b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\\u30A4\\u30F3\\u30C9\\u6642\\u9593", "Asia/Calcutta" }, 2774b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2775b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // ========== 2776b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 277785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 277885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00", "-8:00" }, 277985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-08:00", "-8:00" }, 278085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "GMT-08:00", "-8:00" }, 278185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 278285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" }, 278385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-07:00", "-7:00" }, 278485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "GMT-07:00", "-7:00" }, 278585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "US (Los Angeles)", "America/Los_Angeles" }, 278685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "US (Los Angeles)", "America/Los_Angeles" }, 278785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 278885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 278985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 279085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 279185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 279285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 279385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 279485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 279585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 279685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "AR (Buenos Aires)", "America/Buenos_Aires" }, 279785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "AR (Buenos Aires)", "America/Buenos_Aires" }, 279885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 279985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 280085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 280185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 280285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 280385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 280485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 280585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 280685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 280785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "AR (Buenos Aires)", "America/Buenos_Aires" }, 280885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "AR (Buenos Aires)", "America/Buenos_Aires" }, 280985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 281085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 281185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "-5:00" }, 281285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-05:00", "-5:00" }, 281385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-05:00", "-5:00" }, 281485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 281585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "-4:00" }, 281685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-04:00", "-4:00" }, 281785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-04:00", "-4:00" }, 281885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Havana", "2004-07-15T00:00:00Z", "v", "CU", "America/Havana" }, 281985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "CU", "America/Havana" }, 282085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 282185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 282285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 282385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" }, 282485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" }, 282585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 282685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 282785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" }, 282885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" }, 282985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "AU (Sydney)", "Australia/Sydney" }, 283085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "AU (Sydney)", "Australia/Sydney" }, 283185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 283285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 283385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 283485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" }, 283585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" }, 283685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 283785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 283885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" }, 283985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" }, 284085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "AU (Sydney)", "Australia/Sydney" }, 284185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "AU (Sydney)", "Australia/Sydney" }, 284285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 284385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 284485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+00:00", "+0:00" }, 284585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT+00:00", "+0:00" }, 284685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "GMT+00:00", "+0:00" }, 284785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 284885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" }, 284985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+01:00", "+1:00" }, 285085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+01:00", "+1:00" }, 285185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Europe/London", "2004-07-15T00:00:00Z", "v", "GB", "Europe/London" }, 285285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "GB", "Europe/London" }, 285385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 285485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 285585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 285685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 285785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 285885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 285985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 286085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 286185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 286285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-03:00", "-3:00" }, 286385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00" }, 2864b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2865b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // JB#5150 286685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 286785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 286885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+05:30", "+5:30" }, 286985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" }, 287085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 287185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 287285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+05:30", "+05:30" }, 287385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" }, 287485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "IN", "Asia/Calcutta" }, 287585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "IN", "Asia/Calcutta" }, 287685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { NULL, NULL, NULL, NULL, NULL, NULL }, 2877b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 2878b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 287985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UErrorCode status = U_ZERO_ERROR; 288085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Calendar *cal = GregorianCalendar::createInstance(status); 288185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ASSERT_OK(status); 288285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int i = 0; fallbackTests[i][0]; i++) { 288385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho const char **testLine = fallbackTests[i]; 288485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString info[5]; 288585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for ( int j = 0 ; j < 5 ; j++ ) { 288685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho info[j] = UnicodeString(testLine[j], -1, US_INV); 288785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 288885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho info[4] = info[4].unescape(); 288985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln("%s;%s;%s;%s", testLine[0], testLine[1], testLine[2], testLine[3]); 2890b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 289185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho TimeZone *tz = TimeZone::createTimeZone(info[1]); 289285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 289385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (strcmp(testLine[2], "2004-07-15T00:00:00Z") == 0) { 289485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho cal->set(2004,6,15,0,0,0); 289585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } else { 289685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho cal->set(2004,0,15,0,0,0); 289785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 289885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 289985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho SimpleDateFormat fmt(info[3], Locale(testLine[0]),status); 290085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ASSERT_OK(status); 290185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho cal->adoptTimeZone(tz); 290285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString result; 290385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho FieldPosition pos(0); 290485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fmt.format(*cal,result,pos); 290585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (result != info[4]) { 290685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln(info[0] + ";" + info[1] + ";" + info[2] + ";" + info[3] + " expected: '" + 290785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho info[4] + "' but got: '" + result + "'"); 290885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 290985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 291085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete cal; 291185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho} 291285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 291385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hovoid DateFormatTest::TestRoundtripWithCalendar(void) { 291485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UErrorCode status = U_ZERO_ERROR; 291585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 291685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho TimeZone *tz = TimeZone::createTimeZone("Europe/Paris"); 291785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho TimeZone *gmt = TimeZone::createTimeZone("Etc/GMT"); 291885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 291985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Calendar *calendars[] = { 292085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Calendar::createInstance(*tz, Locale("und@calendar=gregorian"), status), 292185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Calendar::createInstance(*tz, Locale("und@calendar=buddhist"), status), 292285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho// Calendar::createInstance(*tz, Locale("und@calendar=hebrew"), status), 292385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Calendar::createInstance(*tz, Locale("und@calendar=islamic"), status), 292485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Calendar::createInstance(*tz, Locale("und@calendar=japanese"), status), 292585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho NULL 292685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho }; 292785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (U_FAILURE(status)) { 292885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln("Failed to initialize calendars"); 292985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int i = 0; calendars[i] != NULL; i++) { 293085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete calendars[i]; 293185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 293285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho return; 293385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 2934b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 293585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho //FIXME The formatters commented out below are currently failing because of 293685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // the calendar calculation problem reported by #6691 293785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 293885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // The order of test formatters must match the order of calendars above. 293985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat *formatters[] = { 294085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale("en_US")), //calendar=gregorian 294185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale("th_TH")), //calendar=buddhist 294285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho// DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale("he_IL@calendar=hebrew")), 294385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale("ar_EG@calendar=islamic")), 294485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho// DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale("ja_JP@calendar=japanese")), 294585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho NULL 294685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho }; 294785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 294885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate d = Calendar::getNow(); 294985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString buf; 295085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho FieldPosition fpos; 295185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ParsePosition ppos; 295285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 295385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int i = 0; formatters[i] != NULL; i++) { 295485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho buf.remove(); 295585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fpos.setBeginIndex(0); 295685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fpos.setEndIndex(0); 295785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho calendars[i]->setTime(d, status); 295885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 295985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // Normal case output - the given calendar matches the calendar 296085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // used by the formatter 296185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho formatters[i]->format(*calendars[i], buf, fpos); 296285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString refStr(buf); 296385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 296485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int j = 0; calendars[j] != NULL; j++) { 296585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (j == i) { 296685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho continue; 296785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 296885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho buf.remove(); 296985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fpos.setBeginIndex(0); 297085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fpos.setEndIndex(0); 297185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho calendars[j]->setTime(d, status); 297285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 297385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // Even the different calendar type is specified, 297485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // we should get the same result. 297585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho formatters[i]->format(*calendars[j], buf, fpos); 297685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (refStr != buf) { 297785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Different format result with a different calendar for the same time -" 297885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Reference calendar type=" + calendars[i]->getType() 297985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Another calendar type=" + calendars[j]->getType() 298085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Expected result=" + refStr 298185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Actual result=" + buf); 2982b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 298385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 2984b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 298585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho calendars[i]->setTimeZone(*gmt); 298685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho calendars[i]->clear(); 298785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ppos.setErrorIndex(-1); 298885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ppos.setIndex(0); 298985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 299085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // Normal case parse result - the given calendar matches the calendar 299185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // used by the formatter 299285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho formatters[i]->parse(refStr, *calendars[i], ppos); 299385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 299485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int j = 0; calendars[j] != NULL; j++) { 299585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (j == i) { 299685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho continue; 299785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 299885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho calendars[j]->setTimeZone(*gmt); 299985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho calendars[j]->clear(); 300085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ppos.setErrorIndex(-1); 300185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ppos.setIndex(0); 300285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 300385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // Even the different calendar type is specified, 300485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // we should get the same time and time zone. 300585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho formatters[i]->parse(refStr, *calendars[j], ppos); 300685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (calendars[i]->getTime(status) != calendars[j]->getTime(status) 300785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho || calendars[i]->getTimeZone() != calendars[j]->getTimeZone()) { 300885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString tzid; 300985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Different parse result with a different calendar for the same string -" 301085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Reference calendar type=" + calendars[i]->getType() 301185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Another calendar type=" + calendars[j]->getType() 301285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Date string=" + refStr 301385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Expected time=" + calendars[i]->getTime(status) 301485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Expected time zone=" + calendars[i]->getTimeZone().getID(tzid) 301585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Actual time=" + calendars[j]->getTime(status) 301685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Actual time zone=" + calendars[j]->getTimeZone().getID(tzid)); 3017b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 3018b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 301985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (U_FAILURE(status)) { 302085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: " + u_errorName(status)); 302185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho break; 302285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 302385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 302485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 302585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete tz; 302685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete gmt; 302785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int i = 0; calendars[i] != NULL; i++) { 302885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete calendars[i]; 302985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 303085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int i = 0; formatters[i] != NULL; i++) { 303185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete formatters[i]; 3032b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 3033b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 3034b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3035b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* 3036b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestRelativeError(void) 3037b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 3038b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status; 3039b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale en("en"); 3040b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3041b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *en_reltime_reldate = DateFormat::createDateTimeInstance(DateFormat::kFullRelative,DateFormat::kFullRelative,en); 3042b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(en_reltime_reldate == NULL) { 3043b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("PASS: rel date/rel time failed"); 3044b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 3045b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: rel date/rel time created, should have failed."); 3046b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete en_reltime_reldate; 3047b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 3048b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 3049b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3050b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestRelativeOther(void) 3051b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 3052b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("Nothing in this test. When we get more data from CLDR, put in some tests of -2, +2, etc. "); 3053b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 3054b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 3055b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 305685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hovoid DateFormatTest::Test6338(void) 305785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho{ 305885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UErrorCode status = U_ZERO_ERROR; 305985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 306085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho SimpleDateFormat *fmt1 = new SimpleDateFormat(UnicodeString("y-M-d"), Locale("ar"), status); 306185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "new SimpleDateFormat"); 306285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 306385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt1 = date(2008-1900, UCAL_JUNE, 10, 12, 00); 306485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str1; 306585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str1 = fmt1->format(dt1, str1); 306685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str1); 306785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 306885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt11 = fmt1->parse(str1, status); 306985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "fmt->parse"); 307085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 307185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str11; 307285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str11 = fmt1->format(dt11, str11); 307385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str11); 307485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 307585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (str1 != str11) { 307685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Different dates str1:" + str1 307785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + " str2:" + str11); 307885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 307985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmt1; 308085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 308185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ///////////////// 308285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 308385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho status = U_ZERO_ERROR; 308485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho SimpleDateFormat *fmt2 = new SimpleDateFormat(UnicodeString("y M d"), Locale("ar"), status); 308585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "new SimpleDateFormat"); 308685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 308785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt2 = date(2008-1900, UCAL_JUNE, 10, 12, 00); 308885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str2; 308985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str2 = fmt2->format(dt2, str2); 309085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str2); 309185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 309285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt22 = fmt2->parse(str2, status); 309385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "fmt->parse"); 309485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 309585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str22; 309685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str22 = fmt2->format(dt22, str22); 309785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str22); 309885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 309985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (str2 != str22) { 310085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Different dates str1:" + str2 310185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + " str2:" + str22); 310285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 310385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmt2; 310485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 310585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ///////////////// 310685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 310785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho status = U_ZERO_ERROR; 310885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho SimpleDateFormat *fmt3 = new SimpleDateFormat(UnicodeString("y-M-d"), Locale("en-us"), status); 310985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "new SimpleDateFormat"); 311085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 311185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt3 = date(2008-1900, UCAL_JUNE, 10, 12, 00); 311285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str3; 311385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str3 = fmt3->format(dt3, str3); 311485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str3); 311585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 311685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt33 = fmt3->parse(str3, status); 311785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "fmt->parse"); 311885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 311985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str33; 312085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str33 = fmt3->format(dt33, str33); 312185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str33); 312285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 312385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (str3 != str33) { 312485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Different dates str1:" + str3 312585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + " str2:" + str33); 312685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 312785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmt3; 312885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 312985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ///////////////// 313085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 313185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho status = U_ZERO_ERROR; 313285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho SimpleDateFormat *fmt4 = new SimpleDateFormat(UnicodeString("y M d"), Locale("en-us"), status); 313385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "new SimpleDateFormat"); 313485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 313585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt4 = date(2008-1900, UCAL_JUNE, 10, 12, 00); 313685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str4; 313785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str4 = fmt4->format(dt4, str4); 313885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str4); 313985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 314085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt44 = fmt4->parse(str4, status); 314185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "fmt->parse"); 314285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 314385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str44; 314485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str44 = fmt4->format(dt44, str44); 314585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str44); 314685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 314785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (str4 != str44) { 314885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Different dates str1:" + str4 314985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + " str2:" + str44); 315085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 315185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmt4; 315285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 315385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho} 315485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 315585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hovoid DateFormatTest::Test6726(void) 315685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho{ 315785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // status 315885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho// UErrorCode status = U_ZERO_ERROR; 315985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 316085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // fmtf, fmtl, fmtm, fmts; 316185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString strf, strl, strm, strs; 316285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt = date(2008-1900, UCAL_JUNE, 10, 12, 00); 316385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 316485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Locale loc("ja"); 316585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat* fmtf = DateFormat::createDateTimeInstance(DateFormat::FULL, DateFormat::FULL, loc); 316685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat* fmtl = DateFormat::createDateTimeInstance(DateFormat::LONG, DateFormat::FULL, loc); 316785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat* fmtm = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, DateFormat::FULL, loc); 316885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat* fmts = DateFormat::createDateTimeInstance(DateFormat::SHORT, DateFormat::FULL, loc); 316985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (fmtf == NULL || fmtl == NULL || fmtm == NULL || fmts == NULL) { 317085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("Unable to create DateFormat. got NULL."); 317185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /* It may not be true that if one is NULL all is NULL. Just to be safe. */ 317285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmtf; 317385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmtl; 317485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmtm; 317585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmts; 317685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 317785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho return; 317885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 317985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho strf = fmtf->format(dt, strf); 318085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho strl = fmtl->format(dt, strl); 318185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho strm = fmtm->format(dt, strm); 318285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho strs = fmts->format(dt, strs); 318385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 318485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho/* Locale data is not yet updated 318585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (strf.charAt(13) == UChar(' ')) { 318685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Improper formated date: " + strf); 318785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 318885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (strl.charAt(10) == UChar(' ')) { 318985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Improper formated date: " + strl); 319085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 319185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho*/ 319285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (strm.charAt(10) != UChar(' ')) { 319385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Improper formated date: " + strm); 319485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 319585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (strs.charAt(8) != UChar(' ')) { 319685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Improper formated date: " + strs); 319785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 319885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 319985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmtf; 320085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmtl; 320185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmtm; 320285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmts; 320385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 320485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho return; 320585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho} 320685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 320785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho/** 320885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Test DateFormat's parsing of default GMT variants. See ticket#6135 320985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 321085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hovoid DateFormatTest::TestGMTParsing() { 321185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho const char* DATA[] = { 321285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "HH:mm:ss Z", 321385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 321485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // pattern, input, expected output (in quotes) 321585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "HH:mm:ss Z", "10:20:30 GMT+03:00", "10:20:30 +0300", 321685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "HH:mm:ss Z", "10:20:30 UT-02:00", "10:20:30 -0200", 321785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "HH:mm:ss Z", "10:20:30 GMT", "10:20:30 +0000", 321885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "HH:mm:ss vvvv", "10:20:30 UT+10:00", "10:20:30 +1000", 321985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "HH:mm:ss zzzz", "10:20:30 UTC", "10:20:30 +0000", // standalone "UTC" 322085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "ZZZZ HH:mm:ss", "UT 10:20:30", "10:20:30 +0000", 322185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "V HH:mm:ss", "UT+0130 10:20:30", "10:20:30 +0130", 322285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "V HH:mm:ss", "UTC+0130 10:20:30", NULL, // UTC+0130 is not a supported pattern 322385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "HH mm Z ss", "10 20 GMT-1100 30", "10:20:30 -1100", 322485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho }; 322585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho const int32_t DATA_len = sizeof(DATA)/sizeof(DATA[0]); 322685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho expectParse(DATA, DATA_len, Locale("en")); 322785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho} 322885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 322985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho// Test case for localized GMT format parsing 323085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho// with no delimitters in offset format (Chinese locale) 323185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hovoid DateFormatTest::Test6880() { 323285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UErrorCode status = U_ZERO_ERROR; 323385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate d1, d2, dp1, dp2, dexp1, dexp2; 323485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString s1, s2; 323585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 323685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho TimeZone *tz = TimeZone::createTimeZone("Asia/Shanghai"); 323785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho GregorianCalendar gcal(*tz, status); 323885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 323985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho gcal.clear(); 324085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho gcal.set(1910, UCAL_JULY, 1, 12, 00); // offset 8:05:52 324185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho d1 = gcal.getTime(status); 324285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 324385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho gcal.clear(); 324485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho gcal.set(1950, UCAL_JULY, 1, 12, 00); // offset 8:00 324585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho d2 = gcal.getTime(status); 324685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 324785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho gcal.clear(); 324885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho gcal.set(1970, UCAL_JANUARY, 1, 12, 00); 324985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dexp2 = gcal.getTime(status); 325085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dexp1 = dexp2 - (5*60 + 52)*1000; // subtract 5m52s 325185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 325285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (U_FAILURE(status)) { 325385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln("FAIL: Gregorian calendar error"); 325485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 325585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 325685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat *fmt = DateFormat::createTimeInstance(DateFormat::kFull, Locale("zh")); 325785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (fmt == NULL) { 325885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("Unable to create DateFormat. Got NULL."); 325985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho return; 326085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 326185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fmt->adoptTimeZone(tz); 326285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 326385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fmt->format(d1, s1); 326485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fmt->format(d2, s2); 326585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 326685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dp1 = fmt->parse(s1, status); 326785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dp2 = fmt->parse(s2, status); 326885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 326985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (U_FAILURE(status)) { 327085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln("FAIL: Parse failure"); 327185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 327285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 327385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (dp1 != dexp1) { 327485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln("FAIL: Failed to parse " + s1 + " parsed: " + dp1 + " expected: " + dexp1); 327585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 327685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (dp2 != dexp2) { 327785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln("FAIL: Failed to parse " + s2 + " parsed: " + dp2 + " expected: " + dexp2); 327885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 327985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 328085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmt; 328185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho} 3282b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3283b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3284b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_FORMATTING */ 3285b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3286b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//eof 3287