dtfmttst.cpp revision 27f654740f2a26ad62a5c155af9199af9e69b889
1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/******************************************************************** 250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * COPYRIGHT: 350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Copyright (c) 1997-2010, International Business Machines 450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Corporation and others. All Rights Reserved. 5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ********************************************************************/ 650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/utypes.h" 8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING 10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "dtfmttst.h" 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); 8227f654740f2a26ad62a5c155af9199af9e69b889claireho TESTCASE(42,TestISOEra); 8327f654740f2a26ad62a5c155af9199af9e69b889claireho TESTCASE(43,TestFormalChineseDate); 84b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 8527f654740f2a26ad62a5c155af9199af9e69b889claireho TESTCASE(43,TestRelativeError); 8627f654740f2a26ad62a5c155af9199af9e69b889claireho TESTCASE(44,TestRelativeOther); 87b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 88b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru default: name = ""; break; 89b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 90b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 91b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 92b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// Test written by Wally Wedel and emailed to me. 93b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestWallyWedel() 94b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 95b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 96b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 97b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Instantiate a TimeZone so we can get the ids. 98b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 99b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone *tz = new SimpleTimeZone(7,""); 100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Computational variables. 102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t offset, hours, minutes, seconds; 104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Instantiate a SimpleDateFormat set up to produce a full time 106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru zone name. 107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat *sdf = new SimpleDateFormat((UnicodeString)"zzzz", status); 109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A String array for the time zone ids. 111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t ids_length; 113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru StringEnumeration* ids = TimeZone::createEnumeration(); 114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ids_length = ids->count(status); 115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * How many ids do we have? 117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("Time Zone IDs size: %d", ids_length); 119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Column headings (sort of) 121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("Ordinal ID offset(h:m) name"); 123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Loop through the tzs. 125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate today = Calendar::getNow(); 127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Calendar *cal = Calendar::createInstance(status); 128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int32_t i = 0; i < ids_length; i++) { 129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // logln(i + " " + ids[i]); 130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UnicodeString* id = ids->snext(status); 131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone *ttz = TimeZone::createTimeZone(*id); 132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // offset = ttz.getRawOffset(); 133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru cal->setTimeZone(*ttz); 134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru cal->setTime(today, status); 135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru offset = cal->get(UCAL_ZONE_OFFSET, status) + cal->get(UCAL_DST_OFFSET, status); 136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // logln(i + " " + ids[i] + " offset " + offset); 137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* sign = "+"; 138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (offset < 0) { 139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru sign = "-"; 140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru offset = -offset; 141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru hours = offset/3600000; 143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru minutes = (offset%3600000)/60000; 144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru seconds = (offset%60000)/1000; 145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString dstOffset = (UnicodeString)"" + sign + (hours < 10 ? "0" : "") + 146b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru (int32_t)hours + ":" + (minutes < 10 ? "0" : "") + (int32_t)minutes; 147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (seconds != 0) { 148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dstOffset = dstOffset + ":" + (seconds < 10 ? "0" : "") + seconds; 149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Instantiate a date so we can display the time zone name. 152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru sdf->setTimeZone(*ttz); 154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Format the output. 156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString fmtOffset; 158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru FieldPosition pos(0); 159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru sdf->format(today,fmtOffset, pos); 160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // UnicodeString fmtOffset = tzS.toString(); 161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString *fmtDstOffset = 0; 162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fmtOffset.startsWith("GMT")) 163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //fmtDstOffset = fmtOffset->substring(3); 165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmtDstOffset = new UnicodeString(); 166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmtOffset.extract(3, fmtOffset.length(), *fmtDstOffset); 167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Show our result. 170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBool ok = fmtDstOffset == 0 || *fmtDstOffset == dstOffset; 172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (ok) 173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(UnicodeString() + i + " " + *id + " " + dstOffset + 175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru " " + fmtOffset + 176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru (fmtDstOffset != 0 ? " ok" : " ?")); 177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 178b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else 179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln(UnicodeString() + i + " " + *id + " " + dstOffset + 181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru " " + fmtOffset + " *** FAIL ***"); 182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete ttz; 184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmtDstOffset; 185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 186b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete cal; 187b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // delete ids; // TODO: BAD API 188b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete ids; 189b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete sdf; 190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete tz; 191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 192b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 193b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 19450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 195b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 196b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test operator== 197b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 198b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 199b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestEquals() 200b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 201b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat* fmtA = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, DateFormat::FULL); 202b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat* fmtB = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, DateFormat::FULL); 203b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if ( fmtA == NULL || fmtB == NULL){ 204b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dataerrln("Error calling DateFormat::createDateTimeInstance"); 205b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmtA; 206b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmtB; 207b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 208b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 209b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 210b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(*fmtA == *fmtB)) errln((UnicodeString)"FAIL"); 211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmtA; 212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmtB; 213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone* test = TimeZone::createTimeZone("PDT"); 215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete test; 216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 21750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 218b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 219b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 220b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the parsing of 2-digit years. 222b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 223b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestTwoDigitYearDSTParse(void) 225b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 226b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 227b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat* fullFmt = new SimpleDateFormat((UnicodeString)"EEE MMM dd HH:mm:ss.SSS zzz yyyy G", status); 228b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat *fmt = new SimpleDateFormat((UnicodeString)"dd-MMM-yy h:mm:ss 'o''clock' a z", Locale::getEnglish(), status); 229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //DateFormat* fmt = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, DateFormat::FULL, Locale::ENGLISH); 230b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString* s = new UnicodeString("03-Apr-04 2:20:47 o'clock AM PST", ""); 231b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone* defaultTZ = TimeZone::createDefault(); 232b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone* PST = TimeZone::createTimeZone("PST"); 233b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t defaultOffset = defaultTZ->getRawOffset(); 234b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t PSTOffset = PST->getRawOffset(); 235b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t hour = 2 + (defaultOffset - PSTOffset) / (60*60*1000); 236b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // hour is the expected hour of day, in units of seconds 237b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru hour = ((hour < 0) ? hour + 24 : hour) * 60*60; 23850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 239b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString str; 240b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(U_FAILURE(status)) { 24250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Could not set up test. exitting - %s", u_errorName(status)); 243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 245b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 246b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d = fmt->parse(*s, status); 247b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(*s + " P> " + ((DateFormat*)fullFmt)->format(d, str)); 248b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t y, m, day, hr, min, sec; 249b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateToFields(d, y, m, day, hr, min, sec); 250b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru hour += defaultTZ->inDaylightTime(d, status) ? 1 : 0; 251b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru hr = hr*60*60; 252b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (hr != hour) 253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Should parse to hour " + hour + " but got " + hr); 254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 256b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: " + (int32_t)status); 257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 258b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete s; 259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmt; 260b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fullFmt; 261b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete PST; 262b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete defaultTZ; 263b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 26450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 265b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 26650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 267b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruUChar toHexString(int32_t i) { return (UChar)(i + (i < 10 ? 0x30 : (0x41 - 10))); } 268b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 269b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruUnicodeString& 270b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::escape(UnicodeString& s) 271b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 272b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString buf; 273b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int32_t i=0; i<s.length(); ++i) 274b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 275b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UChar c = s[(int32_t)i]; 276b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (c <= (UChar)0x7F) buf += c; 277b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else { 278b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf += (UChar)0x5c; buf += (UChar)0x55; 279b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf += toHexString((c & 0xF000) >> 12); 280b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf += toHexString((c & 0x0F00) >> 8); 281b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf += toHexString((c & 0x00F0) >> 4); 282b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf += toHexString(c & 0x000F); 283b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 284b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 285b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return (s = buf); 286b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 28750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 288b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 289b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 290b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 291b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This MUST be kept in sync with DateFormatSymbols.gPatternChars. 292b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 293b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char* PATTERN_CHARS = "GyMdkHmsSEDFwWahKzYeugAZvcLQqV"; 294b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 295b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 296b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A list of the names of all the fields in DateFormat. 297b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This MUST be kept in sync with DateFormat. 298b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 299b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char* DATEFORMAT_FIELD_NAMES[] = { 300b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ERA_FIELD", 301b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "YEAR_FIELD", 302b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MONTH_FIELD", 303b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "DATE_FIELD", 304b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "HOUR_OF_DAY1_FIELD", 305b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "HOUR_OF_DAY0_FIELD", 306b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MINUTE_FIELD", 307b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "SECOND_FIELD", 308b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MILLISECOND_FIELD", 309b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "DAY_OF_WEEK_FIELD", 310b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "DAY_OF_YEAR_FIELD", 311b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "DAY_OF_WEEK_IN_MONTH_FIELD", 312b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "WEEK_OF_YEAR_FIELD", 313b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "WEEK_OF_MONTH_FIELD", 314b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "AM_PM_FIELD", 315b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "HOUR1_FIELD", 316b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "HOUR0_FIELD", 317b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "TIMEZONE_FIELD", 318b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "YEAR_WOY_FIELD", 319b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "DOW_LOCAL_FIELD", 320b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EXTENDED_YEAR_FIELD", 321b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "JULIAN_DAY_FIELD", 322b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MILLISECONDS_IN_DAY_FIELD", 323b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "TIMEZONE_RFC_FIELD", 324b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "GENERIC_TIMEZONE_FIELD", 325b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "STAND_ALONE_DAY_FIELD", 326b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "STAND_ALONE_MONTH_FIELD", 327b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "QUARTER_FIELD", 328b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "STAND_ALONE_QUARTER_FIELD", 329b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "TIMEZONE_SPECIAL_FIELD" 330b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 331b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 332b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const int32_t DATEFORMAT_FIELD_NAMES_LENGTH = 333b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru sizeof(DATEFORMAT_FIELD_NAMES) / sizeof(DATEFORMAT_FIELD_NAMES[0]); 334b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 335b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 336b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify that returned field position indices are correct. 337b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 338b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestFieldPosition() { 339b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 340b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t i, j, exp; 341b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString buf; 342b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 343b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Verify data 344b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormatSymbols rootSyms(Locale(""), ec); 345b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertSuccess("DateFormatSymbols", ec); 34685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (U_FAILURE(ec)) { 34785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho return; 34885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 349b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 350b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // local pattern chars data is not longer loaded 351b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // from icu locale bundle 352b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals("patternChars", PATTERN_CHARS, rootSyms.getLocalPatternChars(buf)); 353b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals("patternChars", PATTERN_CHARS, DateFormatSymbols::getPatternUChars()); 354b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertTrue("DATEFORMAT_FIELD_NAMES", DATEFORMAT_FIELD_NAMES_LENGTH == UDAT_FIELD_COUNT); 355b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertTrue("Data", UDAT_FIELD_COUNT == uprv_strlen(PATTERN_CHARS)); 356b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 357b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Create test formatters 358b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t COUNT = 4; 359b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat* dateFormats[COUNT]; 360b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateFormats[0] = DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale::getUS()); 361b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateFormats[1] = DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale::getFrance()); 362b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Make the pattern "G y M d..." 363b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf.remove().append(PATTERN_CHARS); 364b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (j=buf.length()-1; j>=0; --j) buf.insert(j, (UChar)32/*' '*/); 365b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateFormats[2] = new SimpleDateFormat(buf, Locale::getUS(), ec); 366b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Make the pattern "GGGG yyyy MMMM dddd..." 367b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (j=buf.length()-1; j>=0; j-=2) { 368b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (i=0; i<3; ++i) { 369b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf.insert(j, buf.charAt(j)); 370b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 371b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 372b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateFormats[3] = new SimpleDateFormat(buf, Locale::getUS(), ec); 373b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(U_FAILURE(ec)){ 374b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln(UnicodeString("Could not create SimpleDateFormat object for locale en_US. Error: " )+ UnicodeString(u_errorName(ec))); 375b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 376b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 377b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate aug13 = 871508052513.0; 378b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 379b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Expected output field values for above DateFormats on aug13 380b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Fields are given in order of DateFormat field number 381b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* EXPECTED[] = { 382b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "", "1997", "August", "13", "", "", "34", "12", "", 38385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "Wednesday", "", "", "", "", "PM", "2", "", "Pacific Daylight Time", "", "", "", "", "", "", "", "", "", "", "","", 384b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 385b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "", "1997", "ao\\u00FBt", "13", "", "14", "34", "12", "", 38685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "mercredi", "", "", "", "", "", "", "", "heure avanc\\u00e9e du Pacifique", "", "", "", "", "", "", "", "", "", "", "", "", 387b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 388b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "AD", "1997", "8", "13", "14", "14", "34", "12", "5", 38985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "Wed", "225", "2", "33", "2", "PM", "2", "2", "PDT", "1997", "4", "1997", "2450674", "52452513", "-0700", "PT", "4", "8", "3", "3","PDT", 390b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 391b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "Anno Domini", "1997", "August", "0013", "0014", "0014", "0034", "0012", "5130", 39285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "Wednesday", "0225", "0002", "0033", "0002", "PM", "0002", "0002", "Pacific Daylight Time", "1997", "Wednesday", "1997", "2450674", "52452513", "GMT-07:00", 393b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "Pacific Time", "Wednesday", "August", "3rd quarter", "3rd quarter", "United States (Los Angeles)" 394b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 395b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 396b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t EXPECTED_LENGTH = sizeof(EXPECTED)/sizeof(EXPECTED[0]); 397b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 398b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertTrue("data size", EXPECTED_LENGTH == COUNT * UDAT_FIELD_COUNT); 399b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 400b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone* PT = TimeZone::createTimeZone("America/Los_Angeles"); 401b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (j = 0, exp = 0; j < COUNT; ++j) { 402b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // String str; 403b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat* df = dateFormats[j]; 404b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru df->setTimeZone(*PT); 40527f654740f2a26ad62a5c155af9199af9e69b889claireho SimpleDateFormat* sdtfmt = dynamic_cast<SimpleDateFormat*>(df); 40627f654740f2a26ad62a5c155af9199af9e69b889claireho if (sdtfmt != NULL) { 40727f654740f2a26ad62a5c155af9199af9e69b889claireho logln(" Pattern = " + sdtfmt->toPattern(buf.remove())); 408b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 409b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(" Pattern = ? (not a SimpleDateFormat)"); 410b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 411b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" Result = " + df->format(aug13, buf.remove())); 412b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 41350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t expBase = exp; // save for later 414b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (i = 0; i < UDAT_FIELD_COUNT; ++i, ++exp) { 415b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru FieldPosition pos(i); 416b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf.remove(); 41750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho df->format(aug13, buf, pos); 418b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString field; 419b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf.extractBetween(pos.getBeginIndex(), pos.getEndIndex(), field); 420b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"field #" + i + " " + DATEFORMAT_FIELD_NAMES[i], 421b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ctou(EXPECTED[exp]), field); 422b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 42350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 42450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // test FieldPositionIterator API 42550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho logln("FieldPositionIterator"); 42650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { 42750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode status = U_ZERO_ERROR; 42850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho FieldPositionIterator posIter; 42950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho FieldPosition fp; 43050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 43150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho buf.remove(); 43250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho df->format(aug13, buf, &posIter, status); 43350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho while (posIter.next(fp)) { 43450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t i = fp.getField(); 43550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString field; 43650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho buf.extractBetween(fp.getBeginIndex(), fp.getEndIndex(), field); 43750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho assertEquals((UnicodeString)"field #" + i + " " + DATEFORMAT_FIELD_NAMES[i], 43850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ctou(EXPECTED[expBase + i]), field); 43950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 44050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 44150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 442b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 443b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 44450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 44550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // test null posIter 44650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho buf.remove(); 44750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode status = U_ZERO_ERROR; 44850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dateFormats[0]->format(aug13, buf, NULL, status); 44950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // if we didn't crash, we succeeded. 45050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 451b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (i=0; i<COUNT; ++i) { 452b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dateFormats[i]; 453b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 454b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete PT; 455b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 456b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 457b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 458b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 459b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 460b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * General parse/format tests. Add test cases as needed. 461b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 462b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestGeneral() { 463b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* DATA[] = { 464b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss.SSS", 465b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 466b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Milliseconds are left-justified, since they format as fractions of a second 46727f654740f2a26ad62a5c155af9199af9e69b889claireho "y/M/d H:mm:ss.S", "fp", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31.5", "2004 03 10 16:36:31.500", 46827f654740f2a26ad62a5c155af9199af9e69b889claireho "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", 469b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm:ss.SSS", "F", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31.567", 470b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 471b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 472b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(DATA, ARRAY_SIZE(DATA), Locale("en", "", "")); 473b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 47450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 475b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 476b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 477b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 478b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify that strings which contain incomplete specifications are parsed 479b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * correctly. In some instances, this means not being parsed at all, and 480b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * returning an appropriate error. 481b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 482b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 483b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestPartialParse994() 484b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 485b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 486b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat* f = new SimpleDateFormat(status); 48785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (U_FAILURE(status)) { 48850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail new SimpleDateFormat: %s", u_errorName(status)); 48985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete f; 49085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho return; 49185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 492b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate null = 0; 493b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 10:11:42", date(97, 1 - 1, 17, 10, 11, 42)); 494b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 10:", null); 495b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 10", null); 496b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 ", null); 497b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17", null); 498b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 499b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete f; 500b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 50150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 502b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 50350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 504b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 505b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::tryPat994(SimpleDateFormat* format, const char* pat, const char* str, UDate expected) 506b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 507b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 508b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate null = 0; 509b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(UnicodeString("Pattern \"") + pat + "\" String \"" + str + "\""); 510b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 511b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru format->applyPattern(pat); 512b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date = format->parse(str, status); 513b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status) || date == null) 514b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 515b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"ParseException: " + (int32_t)status); 516b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (expected != null) errln((UnicodeString)"FAIL: Expected " + dateToString(expected)); 517b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 518b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else 519b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 520b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString f; 521b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ((DateFormat*)format)->format(date, f); 522b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(UnicodeString(" parse(") + str + ") -> " + dateToString(date)); 523b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" format -> " + f); 524b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (expected == null || 525b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru !(date == expected)) errln((UnicodeString)"FAIL: Expected null");//" + expected); 526b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(f == str)) errln(UnicodeString("FAIL: Expected ") + str); 527b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 528b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 529b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(ParseException e) { 530b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // logln((UnicodeString)"ParseException: " + e.getMessage()); 531b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // if (expected != null) errln((UnicodeString)"FAIL: Expected " + dateToString(expected)); 532b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 533b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(Exception e) { 534b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // errln((UnicodeString)"*** Exception:"); 535b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // e.printStackTrace(); 536b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 537b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 53850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 539b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 54050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 541b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 542b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify the behavior of patterns in which digits for different fields run together 543b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * without intervening separators. 544b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 545b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 546b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestRunTogetherPattern985() 547b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 548b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 549b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString format("yyyyMMddHHmmssSSS"); 550b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString now, then; 551b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //UBool flag; 552b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat *formatter = new SimpleDateFormat(format, status); 55350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(status)) { 55450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail new SimpleDateFormat: %s", u_errorName(status)); 55550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete formatter; 55650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 55750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 558b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date1 = Calendar::getNow(); 559b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ((DateFormat*)formatter)->format(date1, now); 560b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(now); 561b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition pos(0); 562b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date2 = formatter->parse(now, pos); 563b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (date2 == 0) then = "Parse stopped at " + pos.getIndex(); 564b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else ((DateFormat*)formatter)->format(date2, then); 565b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(then); 566b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(date2 == date1)) errln((UnicodeString)"FAIL"); 567b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete formatter; 568b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 569b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 57050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 571b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 57250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 573b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 574b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify the behavior of patterns in which digits for different fields run together 575b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * without intervening separators. 576b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 577b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 578b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestRunTogetherPattern917() 579b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 580b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 581b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat* fmt; 582b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString myDate; 583b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt = new SimpleDateFormat((UnicodeString)"yyyy/MM/dd", status); 58450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(status)) { 58550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail new SimpleDateFormat: %s", u_errorName(status)); 58650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete fmt; 58750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 58850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 589b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru myDate = "1997/02/03"; 590b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru testIt917(fmt, myDate, date(97, 2 - 1, 3)); 591b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmt; 592b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt = new SimpleDateFormat((UnicodeString)"yyyyMMdd", status); 593b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru myDate = "19970304"; 594b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru testIt917(fmt, myDate, date(97, 3 - 1, 4)); 595b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmt; 596b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 597b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 59850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 599b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 60050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 601b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 602b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::testIt917(SimpleDateFormat* fmt, UnicodeString& str, UDate expected) 603b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 604b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 605b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString pattern; 606b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"pattern=" + fmt->toPattern(pattern) + " string=" + str); 607b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Formattable o; 608b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 609b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ((Format*)fmt)->parseObject(str, o, status); 610b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 611b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) return; 612b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(ParseException e) { 613b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // e.printStackTrace(); 614b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // return; 615b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 616b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Parsed object: " + dateToString(o.getDate())); 617b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(o.getDate() == expected)) errln((UnicodeString)"FAIL: Expected " + dateToString(expected)); 618b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString formatted; ((Format*)fmt)->format(o, formatted, status); 619b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Formatted string: " + formatted); 620b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(formatted == str)) errln((UnicodeString)"FAIL: Expected " + str); 621b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 622b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 62350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 624b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 62550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 626b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 627b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify the handling of Czech June and July, which have the unique attribute that 628b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * one is a proper prefix substring of the other. 629b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 630b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 631b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestCzechMonths459() 632b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 633b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 634b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat* fmt = DateFormat::createDateInstance(DateFormat::FULL, Locale("cs", "", "")); 635b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fmt == NULL){ 636b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dataerrln("Error calling DateFormat::createDateInstance()"); 637b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 638b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 639b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 640b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString pattern; 641b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Pattern " + ((SimpleDateFormat*) fmt)->toPattern(pattern)); 642b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate june = date(97, UCAL_JUNE, 15); 643b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate july = date(97, UCAL_JULY, 15); 644b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString juneStr; fmt->format(june, juneStr); 645b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString julyStr; fmt->format(july, julyStr); 646b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 647b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"format(June 15 1997) = " + juneStr); 648b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d = fmt->parse(juneStr, status); 649b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString s; fmt->format(d, s); 650b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t month,yr,day,hr,min,sec; dateToFields(d,yr,month,day,hr,min,sec); 651b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" -> parse -> " + s + " (month = " + month + ")"); 652b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (month != UCAL_JUNE) errln((UnicodeString)"FAIL: Month should be June"); 653b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"format(July 15 1997) = " + julyStr); 654b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru d = fmt->parse(julyStr, status); 655b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt->format(d, s); 656b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateToFields(d,yr,month,day,hr,min,sec); 657b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" -> parse -> " + s + " (month = " + month + ")"); 658b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (month != UCAL_JULY) errln((UnicodeString)"FAIL: Month should be July"); 659b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 660b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(ParseException e) { 661b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 662b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"Exception: " + (int32_t)status); 663b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 664b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmt; 665b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 66650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 667b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 668b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 669b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 670b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the handling of 'D' in patterns. 671b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 672b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 673b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestLetterDPattern212() 674b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 675b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 676b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString dateString("1995-040.05:01:29"); 677b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString bigD("yyyy-DDD.hh:mm:ss"); 678b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString littleD("yyyy-ddd.hh:mm:ss"); 679b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate expLittleD = date(95, 0, 1, 5, 1, 29); 680b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate expBigD = expLittleD + 39 * 24 * 3600000.0; 681b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expLittleD = expBigD; // Expect the same, with default lenient parsing 682b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"dateString= " + dateString); 683b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat *formatter = new SimpleDateFormat(bigD, status); 68450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(status)) { 68550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail new SimpleDateFormat: %s", u_errorName(status)); 68650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete formatter; 68750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 68850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 689b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition pos(0); 690b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate myDate = formatter->parse(dateString, pos); 691b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Using " + bigD + " -> " + myDate); 692b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (myDate != expBigD) errln((UnicodeString)"FAIL: Expected " + dateToString(expBigD)); 693b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete formatter; 694b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru formatter = new SimpleDateFormat(littleD, status); 69550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ASSERT_OK(status); 696b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru pos = ParsePosition(0); 697b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru myDate = formatter->parse(dateString, pos); 698b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Using " + littleD + " -> " + dateToString(myDate)); 699b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (myDate != expLittleD) errln((UnicodeString)"FAIL: Expected " + dateToString(expLittleD)); 700b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete formatter; 701b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 702b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 70350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 704b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 705b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 706b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 707b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the day of year pattern. 708b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 709b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 710b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestDayOfYearPattern195() 711b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 712b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 713b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate today = Calendar::getNow(); 714b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t year,month,day,hour,min,sec; dateToFields(today,year,month,day,hour,min,sec); 715b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate expected = date(year, month, day); 716b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Test Date: " + dateToString(today)); 717b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat* sdf = (SimpleDateFormat*)DateFormat::createDateInstance(); 718b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (sdf == NULL){ 719b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dataerrln("Error calling DateFormat::createDateInstance()"); 720b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 721b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 722b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPattern(*sdf, today, 0, expected); 723b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPattern(*sdf, today, "G yyyy DDD", expected); 724b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete sdf; 725b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 726b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 72750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 728b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 72950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 730b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 731b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::tryPattern(SimpleDateFormat& sdf, UDate d, const char* pattern, UDate expected) 732b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 733b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 734b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (pattern != 0) sdf.applyPattern(pattern); 735b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString thePat; 736b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"pattern: " + sdf.toPattern(thePat)); 737b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString formatResult; (*(DateFormat*)&sdf).format(d, formatResult); 738b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" format -> " + formatResult); 739b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // try { 740b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d2 = sdf.parse(formatResult, status); 741b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" parse(" + formatResult + ") -> " + dateToString(d2)); 742b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (d2 != expected) errln((UnicodeString)"FAIL: Expected " + dateToString(expected)); 743b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString format2; (*(DateFormat*)&sdf).format(d2, format2); 744b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" format -> " + format2); 745b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(formatResult == format2)) errln((UnicodeString)"FAIL: Round trip drift"); 746b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 747b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(Exception e) { 748b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 749b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"Error: " + (int32_t)status); 750b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 751b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 75250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 753b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 754b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 755b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 756b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the handling of single quotes in patterns. 757b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 758b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 759b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestQuotePattern161() 760b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 761b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 762b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat* formatter = new SimpleDateFormat((UnicodeString)"MM/dd/yyyy 'at' hh:mm:ss a zzz", status); 76350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(status)) { 76450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail new SimpleDateFormat: %s", u_errorName(status)); 76550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete formatter; 76650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 76750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 768b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate currentTime_1 = date(97, UCAL_AUGUST, 13, 10, 42, 28); 769b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString dateString; ((DateFormat*)formatter)->format(currentTime_1, dateString); 770b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString exp("08/13/1997 at 10:42:28 AM "); 771b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"format(" + dateToString(currentTime_1) + ") = " + dateString); 772b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (0 != dateString.compareBetween(0, exp.length(), exp, 0, exp.length())) errln((UnicodeString)"FAIL: Expected " + exp); 773b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete formatter; 774b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 775b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 77650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 777b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 778b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 779b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 780b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify the correct behavior when handling invalid input strings. 781b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 782b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 783b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestBadInput135() 784b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 785b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 786b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat::EStyle looks[] = { 787b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat::SHORT, DateFormat::MEDIUM, DateFormat::LONG, DateFormat::FULL 788b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 789b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t looks_length = (int32_t)(sizeof(looks) / sizeof(looks[0])); 790b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* strings[] = { 791b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "Mar 15", "Mar 15 1997", "asdf", "3/1/97 1:23:", "3/1/00 1:23:45 AM" 792b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 793b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t strings_length = (int32_t)(sizeof(strings) / sizeof(strings[0])); 794b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *full = DateFormat::createDateTimeInstance(DateFormat::LONG, DateFormat::LONG); 795b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(full==NULL) { 79685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("could not create date time instance"); 797b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 798b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 799b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString expected("March 1, 2000 1:23:45 AM "); 800b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int32_t i = 0; i < strings_length;++i) { 801b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* text = strings[i]; 802b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int32_t j = 0; j < looks_length;++j) { 803b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat::EStyle dateLook = looks[j]; 804b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int32_t k = 0; k < looks_length;++k) { 805b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat::EStyle timeLook = looks[k]; 806b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *df = DateFormat::createDateTimeInstance(dateLook, timeLook); 807b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (df == NULL){ 808b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dataerrln("Error calling DateFormat::createDateTimeInstance()"); 809b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru continue; 810b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 811b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString prefix = UnicodeString(text) + ", " + dateLook + "/" + timeLook + ": "; 812b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 813b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate when = df->parse(text, status); 814b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (when == 0 && U_SUCCESS(status)) { 815b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln(prefix + "SHOULD NOT HAPPEN: parse returned 0."); 816b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru continue; 817b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 818b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_SUCCESS(status)) 819b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 820b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString format; 821b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full->format(when, format); 822b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(prefix + "OK: " + format); 823b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (0!=format.compareBetween(0, expected.length(), expected, 0, expected.length())) 824b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Expected " + expected + " got " + format); 825b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 826b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 827b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(ParseException e) { 828b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else 829b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 830b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 831b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(StringIndexOutOfBoundsException e) { 832b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // errln(prefix + "SHOULD NOT HAPPEN: " + (int)status); 833b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 834b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete df; 835b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 836b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 837b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 838b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete full; 839b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 840b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 841b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 84250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 843b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char* const parseFormats[] = { 844b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM d, yyyy", 845b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM d yyyy", 846b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "M/d/yy", 847b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "d MMMM, yyyy", 848b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "d MMMM yyyy", 849b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "d MMMM", 850b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM d", 851b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy", 852b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "h:mm a MMMM d, yyyy" 853b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 85450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 855b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char* const inputStrings[] = { 856b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "bogus string", 0, 0, 0, 0, 0, 0, 0, 0, 0, 857b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "April 1, 1997", "April 1, 1997", 0, 0, 0, 0, 0, "April 1", 0, 0, 858b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "Jan 1, 1970", "January 1, 1970", 0, 0, 0, 0, 0, "January 1", 0, 0, 859b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "Jan 1 2037", 0, "January 1 2037", 0, 0, 0, 0, "January 1", 0, 0, 860b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "1/1/70", 0, 0, "1/1/70", 0, 0, 0, 0, "0001", 0, 861b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "5 May 1997", 0, 0, 0, 0, "5 May 1997", "5 May", 0, "0005", 0, 862b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "16 May", 0, 0, 0, 0, 0, "16 May", 0, "0016", 0, 863b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "April 30", 0, 0, 0, 0, 0, 0, "April 30", 0, 0, 864b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "1998", 0, 0, 0, 0, 0, 0, 0, "1998", 0, 865b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "1", 0, 0, 0, 0, 0, 0, 0, "0001", 0, 866b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "3:00 pm Jan 1, 1997", 0, 0, 0, 0, 0, 0, 0, "0003", "3:00 PM January 1, 1997", 867b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 86850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 869b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 870b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 871b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 872b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify the correct behavior when parsing an array of inputs against an 873b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * array of patterns, with known results. The results are encoded after 874b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the input strings in each row. 875b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 876b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 877b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestBadInput135a() 878b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 879b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 880b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat* dateParse = new SimpleDateFormat(status); 881b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(U_FAILURE(status)) { 88250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Failed creating SimpleDateFormat with %s. Quitting test", u_errorName(status)); 883b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dateParse; 884b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 885b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 886b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* s; 887b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date; 888b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const uint32_t PF_LENGTH = (int32_t)(sizeof(parseFormats)/sizeof(parseFormats[0])); 889b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const uint32_t INPUT_LENGTH = (int32_t)(sizeof(inputStrings)/sizeof(inputStrings[0])); 890b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 891b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateParse->applyPattern("d MMMM, yyyy"); 892b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateParse->adoptTimeZone(TimeZone::createDefault()); 893b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru s = "not parseable"; 894b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString thePat; 895b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(UnicodeString("Trying to parse \"") + s + "\" with " + dateParse->toPattern(thePat)); 896b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 897b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru date = dateParse->parse(s, status); 898b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_SUCCESS(status)) 899b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Expected exception during parse"); 900b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 901b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(Exception ex) { 902b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else 903b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Exception during parse: " + (int32_t)status); 904b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 905b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 906b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (uint32_t i = 0; i < INPUT_LENGTH; i += (PF_LENGTH + 1)) { 907b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition parsePosition(0); 908b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString s( inputStrings[i]); 909b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (uint32_t index = 0; index < PF_LENGTH;++index) { 910b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* expected = inputStrings[i + 1 + index]; 911b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateParse->applyPattern(parseFormats[index]); 912b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateParse->adoptTimeZone(TimeZone::createDefault()); 913b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 914b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru parsePosition.setIndex(0); 915b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru date = dateParse->parse(s, parsePosition); 916b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (parsePosition.getIndex() != 0) { 917b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString s1, s2; 918b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru s.extract(0, parsePosition.getIndex(), s1); 919b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru s.extract(parsePosition.getIndex(), s.length(), s2); 920b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (date == 0) { 921b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"ERROR: null result fmt=\"" + 922b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru parseFormats[index] + 923b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "\" pos=" + parsePosition.getIndex() + " " + 924b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru s1 + "|" + s2); 925b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 926b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else { 927b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result; 928b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ((DateFormat*)dateParse)->format(date, result); 929b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Parsed \"" + s + "\" using \"" + dateParse->toPattern(thePat) + "\" to: " + result); 930b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (expected == 0) 931b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Expected parse failure"); 932b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else if (!(result == expected)) 933b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln(UnicodeString("FAIL: Expected ") + expected); 934b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 935b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 936b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else if (expected != 0) { 937b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln(UnicodeString("FAIL: Expected ") + expected + " from \"" + 938b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru s + "\" with \"" + dateParse->toPattern(thePat) + "\""); 939b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 940b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 941b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(Exception ex) { 942b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 943b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"An exception was thrown during parse: " + (int32_t)status); 944b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 945b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 946b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 947b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dateParse; 948b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 949b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 950b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 95150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 952b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 953b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 954b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 955b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the parsing of two-digit years. 956b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 957b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 958b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestTwoDigitYear() 959b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 960b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 961b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat fmt("dd/MM/yy", Locale::getUK(), ec); 962b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(ec)) { 96350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("FAIL: SimpleDateFormat constructor - %s", u_errorName(ec)); 964b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 965b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 966b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru parse2DigitYear(fmt, "5/6/17", date(117, UCAL_JUNE, 5)); 967b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru parse2DigitYear(fmt, "4/6/34", date(34, UCAL_JUNE, 4)); 968b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 96950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 970b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 97150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 972b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 973b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::parse2DigitYear(DateFormat& fmt, const char* str, UDate expected) 974b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 975b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 976b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 977b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d = fmt.parse(str, status); 978b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString thePat; 979b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(UnicodeString("Parsing \"") + str + "\" with " + ((SimpleDateFormat*)&fmt)->toPattern(thePat) + 980b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru " => " + dateToString(d)); 981b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (d != expected) errln((UnicodeString)"FAIL: Expected " + expected); 982b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 983b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(ParseException e) { 984b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 985b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Got exception"); 986b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 987b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 98850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 989b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 990b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 991b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 992b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the formatting of time zones. 993b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 994b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 995b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestDateFormatZone061() 996b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 997b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 998b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date; 999b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *formatter; 1000b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru date= 859248000000.0; 1001b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Date 1997/3/25 00:00 GMT: " + date); 1002b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru formatter = new SimpleDateFormat((UnicodeString)"dd-MMM-yyyyy HH:mm", Locale::getUK(), status); 1003b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(U_FAILURE(status)) { 100450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Failed creating SimpleDateFormat with %s. Quitting test", u_errorName(status)); 1005b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete formatter; 1006b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1007b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1008b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru formatter->adoptTimeZone(TimeZone::createTimeZone("GMT")); 1009b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString temp; formatter->format(date, temp); 1010b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Formatted in GMT to: " + temp); 1011b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 1012b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate tempDate = formatter->parse(temp, status); 1013b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Parsed to: " + dateToString(tempDate)); 1014b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (tempDate != date) errln((UnicodeString)"FAIL: Expected " + dateToString(date)); 1015b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 1016b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(Throwable t) { 1017b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 1018b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"Date Formatter throws: " + (int32_t)status); 1019b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 1020b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete formatter; 1021b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 102250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1023b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 102450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1025b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1026b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the formatting of time zones. 1027b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1028b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 1029b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestDateFormatZone146() 1030b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1031b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone *saveDefault = TimeZone::createDefault(); 1032b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1033b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 1034b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone *thedefault = TimeZone::createTimeZone("GMT"); 1035b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone::setDefault(*thedefault); 1036b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // java.util.Locale.setDefault(new java.util.Locale("ar", "", "")); 1037b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1038b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // check to be sure... its GMT all right 1039b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone *testdefault = TimeZone::createDefault(); 1040b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString testtimezone; 1041b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru testdefault->getID(testtimezone); 1042b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (testtimezone == "GMT") 1043b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("Test timezone = " + testtimezone); 1044b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else 1045b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("Test timezone should be GMT, not " + testtimezone); 1046b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1047b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 1048b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // now try to use the default GMT time zone 1049b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru GregorianCalendar *greenwichcalendar = 1050b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru new GregorianCalendar(1997, 3, 4, 23, 0, status); 105150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(status)) { 105250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail new GregorianCalendar: %s", u_errorName(status)); 105350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } else { 105450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho //*****************************greenwichcalendar.setTimeZone(TimeZone.getDefault()); 105550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho //greenwichcalendar.set(1997, 3, 4, 23, 0); 105650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // try anything to set hour to 23:00 !!! 105750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho greenwichcalendar->set(UCAL_HOUR_OF_DAY, 23); 105850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // get time 105950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UDate greenwichdate = greenwichcalendar->getTime(status); 106050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // format every way 106150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString DATA [] = { 106250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString("simple format: "), UnicodeString("04/04/97 23:00 GMT+00:00"), 106350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString("MM/dd/yy HH:mm z"), 106450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString("full format: "), UnicodeString("Friday, April 4, 1997 11:00:00 o'clock PM GMT+00:00"), 106550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString("EEEE, MMMM d, yyyy h:mm:ss 'o''clock' a z"), 106650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString("long format: "), UnicodeString("April 4, 1997 11:00:00 PM GMT+00:00"), 106750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString("MMMM d, yyyy h:mm:ss a z"), 106850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString("default format: "), UnicodeString("04-Apr-97 11:00:00 PM"), 106950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString("dd-MMM-yy h:mm:ss a"), 107050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString("short format: "), UnicodeString("4/4/97 11:00 PM"), 107150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString("M/d/yy h:mm a") 107250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho }; 107350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t DATA_length = (int32_t)(sizeof(DATA) / sizeof(DATA[0])); 107450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 107550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho for (int32_t i=0; i<DATA_length; i+=3) { 107650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho DateFormat *fmt = new SimpleDateFormat(DATA[i+2], Locale::getEnglish(), status); 107750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(failure(status, "new SimpleDateFormat")) break; 107850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho fmt->setCalendar(*greenwichcalendar); 107950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString result; 108050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho result = fmt->format(greenwichdate, result); 108150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho logln(DATA[i] + result); 108250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (result != DATA[i+1]) 108350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("FAIL: Expected " + DATA[i+1] + ", got " + result); 108450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete fmt; 108550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 1086b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1087b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 1088b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //finally { 1089b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone::adoptDefault(saveDefault); 1090b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 1091b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete testdefault; 1092b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete greenwichcalendar; 1093b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete thedefault; 1094b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1095b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1096b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 109750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1098b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 109950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the formatting of dates in different locales. 1102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 1104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestLocaleDateFormat() // Bug 495 1105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate testDate = date(97, UCAL_SEPTEMBER, 15); 110750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho DateFormat *dfFrench = DateFormat::createDateTimeInstance(DateFormat::FULL, 1108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat::FULL, Locale::getFrench()); 110950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho DateFormat *dfUS = DateFormat::createDateTimeInstance(DateFormat::FULL, 1110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat::FULL, Locale::getUS()); 111185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString expectedFRENCH ( "lundi 15 septembre 1997 00:00:00 heure avanc\\u00E9e du Pacifique", -1, US_INV ); 1112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectedFRENCH = expectedFRENCH.unescape(); 1113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //UnicodeString expectedUS ( "Monday, September 15, 1997 12:00:00 o'clock AM PDT" ); 111485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString expectedUS ( "Monday, September 15, 1997 12:00:00 AM Pacific Daylight Time" ); 1115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Date set to : " + dateToString(testDate)); 111650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString out; 1117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (dfUS == NULL || dfFrench == NULL){ 1118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dataerrln("Error calling DateFormat::createDateTimeInstance)"); 1119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dfUS; 1120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dfFrench; 1121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dfFrench->format(testDate, out); 1125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Date Formated with French Locale " + out); 1126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(out == expectedFRENCH)) 1127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Expected " + expectedFRENCH); 1128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru out.truncate(0); 1129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dfUS->format(testDate, out); 1130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Date Formated with US Locale " + out); 1131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(out == expectedUS)) 1132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Expected " + expectedUS); 1133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dfUS; 1134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dfFrench; 1135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test DateFormat(Calendar) API 1139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestDateFormatCalendar() { 1141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *date=0, *time=0, *full=0; 1142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Calendar *cal=0; 1143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString str; 1144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition pos; 1145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate when; 1146b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 1147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Create a formatter for date fields. */ 1149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru date = DateFormat::createDateInstance(DateFormat::kShort, Locale::getUS()); 1150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (date == NULL) { 115185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("FAIL: createDateInstance failed"); 1152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Create a formatter for time fields. */ 1156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru time = DateFormat::createTimeInstance(DateFormat::kShort, Locale::getUS()); 1157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (time == NULL) { 1158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: createTimeInstance failed"); 1159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Create a full format for output */ 1163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full = DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, 1164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale::getUS()); 1165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (full == NULL) { 1166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: createInstance failed"); 1167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Create a calendar */ 1171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru cal = Calendar::createInstance(Locale::getUS(), ec); 1172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (cal == NULL || U_FAILURE(ec)) { 117350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln((UnicodeString)"FAIL: Calendar::createInstance failed with " + 1174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru u_errorName(ec)); 1175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1178b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Parse the date */ 1179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru cal->clear(); 1180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru str = UnicodeString("4/5/2001", ""); 1181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru pos.setIndex(0); 1182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru date->parse(str, *cal, pos); 1183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (pos.getIndex() != str.length()) { 1184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: DateFormat::parse(4/5/2001) failed at " + 1185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru pos.getIndex()); 1186b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1187b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1188b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1189b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Parse the time */ 1190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru str = UnicodeString("5:45 PM", ""); 1191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru pos.setIndex(0); 1192b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru time->parse(str, *cal, pos); 1193b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (pos.getIndex() != str.length()) { 1194b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: DateFormat::parse(17:45) failed at " + 1195b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru pos.getIndex()); 1196b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1197b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 119850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1199b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Check result */ 1200b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru when = cal->getTime(ec); 1201b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(ec)) { 1202b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: cal->getTime() failed with " + u_errorName(ec)); 1203b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1204b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1205b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru str.truncate(0); 1206b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full->format(when, str); 1207b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Thursday, April 5, 2001 5:45:00 PM PDT 986517900000 1208b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (when == 986517900000.0) { 1209b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("Ok: Parsed result: " + str); 1210b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 1211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: Parsed result: " + str + ", exp 4/5/2001 5:45 PM"); 1212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 121450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho FAIL: 1215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete date; 1216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete time; 1217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete full; 1218b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete cal; 1219b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1220b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1222b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test DateFormat's parsing of space characters. See jitterbug 1916. 1223b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestSpaceParsing() { 1225b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* DATA[] = { 1226b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1227b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1228b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // pattern, input, expected parse or NULL if expect parse failure 1229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM d yy", " 04 05 06", NULL, // MMMM wants Apr/April 1230b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "04 05 06", NULL, 1231b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MM d yy", " 04 05 06", "2006 04 05 00:00:00", 1232b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "04 05 06", "2006 04 05 00:00:00", 1233b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM d yy", " Apr 05 06", "2006 04 05 00:00:00", 1234b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "Apr 05 06", "2006 04 05 00:00:00", 1235b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1236b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t DATA_len = sizeof(DATA)/sizeof(DATA[0]); 1237b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1238b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectParse(DATA, DATA_len, Locale("en")); 1239b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1240b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test handling of "HHmmss" pattern. 1243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestExactCountFormat() { 1245b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* DATA[] = { 1246b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1247b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1248b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // pattern, input, expected parse or NULL if expect parse failure 1249b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "HHmmss", "123456", "1970 01 01 12:34:56", 1250b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "12345", "1970 01 01 01:23:45", 1251b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "1234", NULL, 1252b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "00-05", NULL, 1253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "12-34", NULL, 1254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "00+05", NULL, 1255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ahhmm", "PM730", "1970 01 01 19:30:00", 1256b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t DATA_len = sizeof(DATA)/sizeof(DATA[0]); 1258b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectParse(DATA, DATA_len, Locale("en")); 1260b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1261b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1262b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1263b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test handling of white space. 1264b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1265b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestWhiteSpaceParsing() { 1266b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* DATA[] = { 1267b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd", 126850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1269b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // pattern, input, expected parse or null if expect parse failure 127050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1271b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Pattern space run should parse input text space run 1272b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MM d yy", " 04 01 03", "2003 04 01", 1273b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, " 04 01 03 ", "2003 04 01", 1274b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1275b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t DATA_len = sizeof(DATA)/sizeof(DATA[0]); 127650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1277b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectParse(DATA, DATA_len, Locale("en")); 1278b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1279b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1280b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1281b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestInvalidPattern() { 1282b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 1283b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat f(UnicodeString("Yesterday"), ec); 128450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(ec)) { 128550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail construct SimpleDateFormat: %s", u_errorName(ec)); 128650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 128750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 1288b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString out; 1289b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru FieldPosition pos; 1290b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru f.format((UDate)0, out, pos); 1291b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(out); 1292b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // The bug is that the call to format() will crash. By not 1293b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // crashing, the test passes. 1294b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1295b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1296b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestGreekMay() { 1297b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 1298b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date = -9896080848000.0; 1299b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat fmt("EEEE, dd MMMM yyyy h:mm:ss a", Locale("el", "", ""), ec); 130050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(ec)) { 130150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail construct SimpleDateFormat: %s", u_errorName(ec)); 130250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 130350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 1304b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString str; 1305b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.format(date, str); 1306b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition pos(0); 1307b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d2 = fmt.parse(str, pos); 1308b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (date != d2) { 1309b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: unable to parse strings where case-folding changes length"); 1310b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1311b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1312b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1313b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestStandAloneMonths() 1314b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1315b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *EN_DATA[] = { 1316b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1317b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1318b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1319b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1320b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy LLLL dd H:mm:ss", "F", "2004 03 10 16:36:31", "2004 March 10 16:36:31", 1321b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 132250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1323b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 01 01 0:00:00", "January", "1970 01 01 0:00:00", 1324b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 02 01 0:00:00", "February", "1970 02 01 0:00:00", 1325b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 03 01 0:00:00", "March", "1970 03 01 0:00:00", 1326b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 04 01 0:00:00", "April", "1970 04 01 0:00:00", 1327b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 05 01 0:00:00", "May", "1970 05 01 0:00:00", 1328b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 06 01 0:00:00", "June", "1970 06 01 0:00:00", 1329b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 07 01 0:00:00", "July", "1970 07 01 0:00:00", 1330b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 08 01 0:00:00", "August", "1970 08 01 0:00:00", 1331b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 09 01 0:00:00", "September", "1970 09 01 0:00:00", 1332b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 10 01 0:00:00", "October", "1970 10 01 0:00:00", 1333b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 11 01 0:00:00", "November", "1970 11 01 0:00:00", 1334b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 12 01 0:00:00", "December", "1970 12 01 0:00:00", 133550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1336b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 01 01 0:00:00", "Jan", "1970 01 01 0:00:00", 1337b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 02 01 0:00:00", "Feb", "1970 02 01 0:00:00", 1338b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 03 01 0:00:00", "Mar", "1970 03 01 0:00:00", 1339b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 04 01 0:00:00", "Apr", "1970 04 01 0:00:00", 1340b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 05 01 0:00:00", "May", "1970 05 01 0:00:00", 1341b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 06 01 0:00:00", "Jun", "1970 06 01 0:00:00", 1342b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 07 01 0:00:00", "Jul", "1970 07 01 0:00:00", 1343b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 08 01 0:00:00", "Aug", "1970 08 01 0:00:00", 1344b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 09 01 0:00:00", "Sep", "1970 09 01 0:00:00", 1345b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 10 01 0:00:00", "Oct", "1970 10 01 0:00:00", 1346b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 11 01 0:00:00", "Nov", "1970 11 01 0:00:00", 1347b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 12 01 0:00:00", "Dec", "1970 12 01 0:00:00", 1348b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 134950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1350b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *CS_DATA[] = { 1351b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1352b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1353b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1354b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1355b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1356b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy LLLL dd H:mm:ss", "F", "2004 04 10 16:36:31", "2004 duben 10 16:36:31", 1357b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MMMM dd H:mm:ss", "F", "2004 04 10 16:36:31", "2004 dubna 10 16:36:31", 1358b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1359b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 136050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1361b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 01 01 0:00:00", "leden", "1970 01 01 0:00:00", 1362b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 02 01 0:00:00", "\\u00FAnor", "1970 02 01 0:00:00", 1363b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 03 01 0:00:00", "b\\u0159ezen", "1970 03 01 0:00:00", 1364b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 04 01 0:00:00", "duben", "1970 04 01 0:00:00", 1365b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 05 01 0:00:00", "kv\\u011Bten", "1970 05 01 0:00:00", 1366b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 06 01 0:00:00", "\\u010Derven", "1970 06 01 0:00:00", 1367b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 07 01 0:00:00", "\\u010Dervenec", "1970 07 01 0:00:00", 1368b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 08 01 0:00:00", "srpen", "1970 08 01 0:00:00", 1369b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 09 01 0:00:00", "z\\u00E1\\u0159\\u00ED", "1970 09 01 0:00:00", 1370b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 10 01 0:00:00", "\\u0159\\u00EDjen", "1970 10 01 0:00:00", 1371b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 11 01 0:00:00", "listopad", "1970 11 01 0:00:00", 1372b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 12 01 0:00:00", "prosinec", "1970 12 01 0:00:00", 1373b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1374b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 01 01 0:00:00", "1.", "1970 01 01 0:00:00", 1375b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 02 01 0:00:00", "2.", "1970 02 01 0:00:00", 1376b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 03 01 0:00:00", "3.", "1970 03 01 0:00:00", 1377b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 04 01 0:00:00", "4.", "1970 04 01 0:00:00", 1378b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 05 01 0:00:00", "5.", "1970 05 01 0:00:00", 1379b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 06 01 0:00:00", "6.", "1970 06 01 0:00:00", 1380b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 07 01 0:00:00", "7.", "1970 07 01 0:00:00", 1381b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 08 01 0:00:00", "8.", "1970 08 01 0:00:00", 1382b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 09 01 0:00:00", "9.", "1970 09 01 0:00:00", 1383b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 10 01 0:00:00", "10.", "1970 10 01 0:00:00", 1384b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 11 01 0:00:00", "11.", "1970 11 01 0:00:00", 1385b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 12 01 0:00:00", "12.", "1970 12 01 0:00:00", 1386b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 138750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1388b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(EN_DATA, ARRAY_SIZE(EN_DATA), Locale("en", "", "")); 1389b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(CS_DATA, ARRAY_SIZE(CS_DATA), Locale("cs", "", "")); 1390b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1391b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1392b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestStandAloneDays() 1393b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1394b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *EN_DATA[] = { 1395b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1396b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1397b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 04 0:00:00", "Sunday", "1970 01 04 0:00:00", 1398b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 05 0:00:00", "Monday", "1970 01 05 0:00:00", 1399b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 06 0:00:00", "Tuesday", "1970 01 06 0:00:00", 1400b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 07 0:00:00", "Wednesday", "1970 01 07 0:00:00", 1401b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 01 0:00:00", "Thursday", "1970 01 01 0:00:00", 1402b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 02 0:00:00", "Friday", "1970 01 02 0:00:00", 1403b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 03 0:00:00", "Saturday", "1970 01 03 0:00:00", 140450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1405b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 04 0:00:00", "Sun", "1970 01 04 0:00:00", 1406b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 05 0:00:00", "Mon", "1970 01 05 0:00:00", 1407b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 06 0:00:00", "Tue", "1970 01 06 0:00:00", 1408b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 07 0:00:00", "Wed", "1970 01 07 0:00:00", 1409b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 01 0:00:00", "Thu", "1970 01 01 0:00:00", 1410b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 02 0:00:00", "Fri", "1970 01 02 0:00:00", 1411b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 03 0:00:00", "Sat", "1970 01 03 0:00:00", 1412b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 141350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1414b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *CS_DATA[] = { 1415b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1416b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1417b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 04 0:00:00", "ned\\u011Ble", "1970 01 04 0:00:00", 1418b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 05 0:00:00", "pond\\u011Bl\\u00ED", "1970 01 05 0:00:00", 1419b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 06 0:00:00", "\\u00FAter\\u00FD", "1970 01 06 0:00:00", 1420b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 07 0:00:00", "st\\u0159eda", "1970 01 07 0:00:00", 1421b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 01 0:00:00", "\\u010Dtvrtek", "1970 01 01 0:00:00", 1422b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 02 0:00:00", "p\\u00E1tek", "1970 01 02 0:00:00", 1423b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 03 0:00:00", "sobota", "1970 01 03 0:00:00", 142450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1425b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 04 0:00:00", "ne", "1970 01 04 0:00:00", 1426b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 05 0:00:00", "po", "1970 01 05 0:00:00", 1427b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 06 0:00:00", "\\u00FAt", "1970 01 06 0:00:00", 1428b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 07 0:00:00", "st", "1970 01 07 0:00:00", 1429b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 01 0:00:00", "\\u010Dt", "1970 01 01 0:00:00", 1430b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 02 0:00:00", "p\\u00E1", "1970 01 02 0:00:00", 1431b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 03 0:00:00", "so", "1970 01 03 0:00:00", 1432b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 143350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1434b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(EN_DATA, ARRAY_SIZE(EN_DATA), Locale("en", "", "")); 1435b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(CS_DATA, ARRAY_SIZE(CS_DATA), Locale("cs", "", "")); 1436b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1437b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1438b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestNarrowNames() 1439b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1440b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *EN_DATA[] = { 1441b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1442b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1443b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MMMMM dd H:mm:ss", "2004 03 10 16:36:31", "2004 M 10 16:36:31", 1444b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy LLLLL dd H:mm:ss", "2004 03 10 16:36:31", "2004 M 10 16:36:31", 144550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1446b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 01 01 0:00:00", "J", 1447b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 02 01 0:00:00", "F", 1448b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 03 01 0:00:00", "M", 1449b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 04 01 0:00:00", "A", 1450b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 05 01 0:00:00", "M", 1451b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 06 01 0:00:00", "J", 1452b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 07 01 0:00:00", "J", 1453b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 08 01 0:00:00", "A", 1454b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 09 01 0:00:00", "S", 1455b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 10 01 0:00:00", "O", 1456b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 11 01 0:00:00", "N", 1457b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 12 01 0:00:00", "D", 145850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1459b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 01 01 0:00:00", "J", 1460b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 02 01 0:00:00", "F", 1461b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 03 01 0:00:00", "M", 1462b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 04 01 0:00:00", "A", 1463b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 05 01 0:00:00", "M", 1464b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 06 01 0:00:00", "J", 1465b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 07 01 0:00:00", "J", 1466b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 08 01 0:00:00", "A", 1467b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 09 01 0:00:00", "S", 1468b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 10 01 0:00:00", "O", 1469b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 11 01 0:00:00", "N", 1470b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 12 01 0:00:00", "D", 1471b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1472b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 04 0:00:00", "S", 1473b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 05 0:00:00", "M", 1474b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 06 0:00:00", "T", 1475b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 07 0:00:00", "W", 1476b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 01 0:00:00", "T", 1477b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 02 0:00:00", "F", 1478b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 03 0:00:00", "S", 147950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1480b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 04 0:00:00", "S", 1481b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 05 0:00:00", "M", 1482b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 06 0:00:00", "T", 1483b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 07 0:00:00", "W", 1484b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 01 0:00:00", "T", 1485b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 02 0:00:00", "F", 1486b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 03 0:00:00", "S", 1487b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 148850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1489b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *CS_DATA[] = { 1490b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1491b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1492b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy LLLLL dd H:mm:ss", "2004 04 10 16:36:31", "2004 d 10 16:36:31", 1493b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MMMMM dd H:mm:ss", "2004 04 10 16:36:31", "2004 d 10 16:36:31", 149450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1495b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 01 01 0:00:00", "l", 1496b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 02 01 0:00:00", "\\u00FA", 1497b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 03 01 0:00:00", "b", 1498b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 04 01 0:00:00", "d", 1499b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 05 01 0:00:00", "k", 1500b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 06 01 0:00:00", "\\u010D", 1501b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 07 01 0:00:00", "\\u010D", 1502b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 08 01 0:00:00", "s", 1503b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 09 01 0:00:00", "z", 1504b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 10 01 0:00:00", "\\u0159", 1505b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 11 01 0:00:00", "l", 1506b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 12 01 0:00:00", "p", 150750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1508b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 01 01 0:00:00", "l", 1509b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 02 01 0:00:00", "\\u00FA", 1510b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 03 01 0:00:00", "b", 1511b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 04 01 0:00:00", "d", 1512b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 05 01 0:00:00", "k", 1513b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 06 01 0:00:00", "\\u010D", 1514b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 07 01 0:00:00", "\\u010D", 1515b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 08 01 0:00:00", "s", 1516b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 09 01 0:00:00", "z", 1517b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 10 01 0:00:00", "\\u0159", 1518b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 11 01 0:00:00", "l", 1519b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 12 01 0:00:00", "p", 1520b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1521b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 04 0:00:00", "N", 1522b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 05 0:00:00", "P", 1523b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 06 0:00:00", "\\u00DA", 1524b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 07 0:00:00", "S", 1525b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 01 0:00:00", "\\u010C", 1526b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 02 0:00:00", "P", 1527b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 03 0:00:00", "S", 1528b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1529b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 04 0:00:00", "N", 1530b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 05 0:00:00", "P", 1531b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 06 0:00:00", "\\u00DA", 1532b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 07 0:00:00", "S", 1533b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 01 0:00:00", "\\u010C", 1534b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 02 0:00:00", "P", 1535b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 03 0:00:00", "S", 1536b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 153750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1538b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectFormat(EN_DATA, ARRAY_SIZE(EN_DATA), Locale("en", "", "")); 1539b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectFormat(CS_DATA, ARRAY_SIZE(CS_DATA), Locale("cs", "", "")); 1540b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1541b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1542b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestEras() 1543b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1544b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *EN_DATA[] = { 1545b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd", 1546b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1547b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy G", "fp", "1951 07 17", "July 17 1951 AD", "1951 07 17", 1548b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy GG", "fp", "1951 07 17", "July 17 1951 AD", "1951 07 17", 1549b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy GGG", "fp", "1951 07 17", "July 17 1951 AD", "1951 07 17", 1550b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy GGGG", "fp", "1951 07 17", "July 17 1951 Anno Domini", "1951 07 17", 1551b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1552b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy G", "fp", "-438 07 17", "July 17 0439 BC", "-438 07 17", 1553b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy GG", "fp", "-438 07 17", "July 17 0439 BC", "-438 07 17", 1554b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy GGG", "fp", "-438 07 17", "July 17 0439 BC", "-438 07 17", 1555b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy GGGG", "fp", "-438 07 17", "July 17 0439 Before Christ", "-438 07 17", 1556b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 155750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1558b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(EN_DATA, ARRAY_SIZE(EN_DATA), Locale("en", "", "")); 1559b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1560b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1561b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestQuarters() 1562b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1563b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *EN_DATA[] = { 1564b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd", 1565b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1566b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "Q", "fp", "1970 01 01", "1", "1970 01 01", 1567b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "QQ", "fp", "1970 04 01", "02", "1970 04 01", 1568b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "QQQ", "fp", "1970 07 01", "Q3", "1970 07 01", 1569b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "QQQQ", "fp", "1970 10 01", "4th quarter", "1970 10 01", 1570b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1571b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "q", "fp", "1970 01 01", "1", "1970 01 01", 1572b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "qq", "fp", "1970 04 01", "02", "1970 04 01", 1573b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "qqq", "fp", "1970 07 01", "Q3", "1970 07 01", 1574b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "qqqq", "fp", "1970 10 01", "4th quarter", "1970 10 01", 1575b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 157650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1577b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(EN_DATA, ARRAY_SIZE(EN_DATA), Locale("en", "", "")); 1578b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1579b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1580b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1581b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test parsing. Input is an array that starts with the following 1582b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * header: 1583b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1584b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [0] = pattern string to parse [i+2] with 1585b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1586b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * followed by test cases, each of which is 3 array elements: 1587b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1588b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i] = pattern, or NULL to reuse prior pattern 1589b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i+1] = input string 1590b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i+2] = expected parse result (parsed with pattern [0]) 1591b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1592b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If expect parse failure, then [i+2] should be NULL. 1593b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1594b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::expectParse(const char** data, int32_t data_length, 1595b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const Locale& loc) { 1596b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UDate FAIL = (UDate) -1; 1597b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UnicodeString FAIL_STR("parse failure"); 1598b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t i = 0; 1599b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1600b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 1601b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat fmt("", loc, ec); 1602b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat ref(data[i++], loc, ec); 1603b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat gotfmt("G yyyy MM dd HH:mm:ss z", loc, ec); 1604b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(ec)) { 160550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("FAIL: SimpleDateFormat constructor - %s", u_errorName(ec)); 1606b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1607b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1608b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1609b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* currentPat = NULL; 1610b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru while (i<data_length) { 1611b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* pattern = data[i++]; 1612b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* input = data[i++]; 1613b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* expected = data[i++]; 1614b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1615b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ec = U_ZERO_ERROR; 1616b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (pattern != NULL) { 1617b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.applyPattern(pattern); 1618b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru currentPat = pattern; 1619b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1620b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate got = fmt.parse(input, ec); 1621b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString gotstr(FAIL_STR); 1622b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(ec)) { 1623b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru got = FAIL; 1624b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 1625b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru gotstr.remove(); 1626b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru gotfmt.format(got, gotstr); 1627b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1628b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1629b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec2 = U_ZERO_ERROR; 1630b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate exp = FAIL; 1631b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString expstr(FAIL_STR); 1632b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (expected != NULL) { 1633b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expstr = expected; 1634b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru exp = ref.parse(expstr, ec2); 1635b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(ec2)) { 1636b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // This only happens if expected is in wrong format -- 1637b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // should never happen once test is debugged. 1638b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: Internal test error"); 1639b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1640b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1641b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1642b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1643b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (got == exp) { 1644b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Ok: " + input + " x " + 164550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho currentPat + " => " + gotstr); 1646b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 1647b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: " + input + " x " + 1648b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru currentPat + " => " + gotstr + ", expected " + 1649b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expstr); 1650b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 165150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 1652b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1653b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1654b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1655b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test formatting and parsing. Input is an array that starts 1656b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * with the following header: 1657b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1658b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [0] = pattern string to parse [i+2] with 1659b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1660b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * followed by test cases, each of which is 3 array elements: 1661b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1662b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i] = pattern, or null to reuse prior pattern 1663b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i+1] = control string, either "fp", "pf", or "F". 1664b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i+2..] = data strings 1665b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1666b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The number of data strings depends on the control string. 1667b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Examples: 1668b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1669b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 'f': Format date [i+2] (as parsed using pattern [0]) and expect string [i+3]. 1670b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 'p': Parse string [i+3] and expect date [i+4]. 1671b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1672b13da9df870a61b11249bf741347908dbea0edd8Jean-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" 1673b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 'F': Format date [i+2] and expect string [i+3], 1674b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * then parse string [i+3] and expect date [i+2]. 1675b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1676b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1677b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 'p': Parse string [i+2] and expect date [i+3]. 1678b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 'f': Format date [i+3] and expect string [i+4]. 1679b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1680b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::expect(const char** data, int32_t data_length, 1681b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const Locale& loc) { 1682b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t i = 0; 1683b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 1684b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString str, str2; 1685b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat fmt("", loc, ec); 1686b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat ref(data[i++], loc, ec); 1687b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat univ("EE G yyyy MM dd HH:mm:ss.SSS z", loc, ec); 168850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(ec)) { 168950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail construct SimpleDateFormat: %s", u_errorName(ec)); 169050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 169150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 1692b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1693b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString currentPat; 1694b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru while (i<data_length) { 1695b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* pattern = data[i++]; 1696b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (pattern != NULL) { 1697b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.applyPattern(pattern); 1698b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru currentPat = pattern; 1699b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1700b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1701b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* control = data[i++]; 1702b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1703b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (uprv_strcmp(control, "fp") == 0) { 1704b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // 'f' 1705b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* datestr = data[i++]; 1706b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* string = data[i++]; 1707b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date = ref.parse(ctou(datestr), ec); 1708b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!assertSuccess("parse", ec)) return; 1709b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".format(" + datestr + ")", 1710b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ctou(string), 1711b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.format(date, str.remove())); 1712b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // 'p' 1713b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru datestr = data[i++]; 1714b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru date = ref.parse(ctou(datestr), ec); 1715b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!assertSuccess("parse", ec)) return; 1716b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate parsedate = fmt.parse(ctou(string), ec); 1717b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (assertSuccess((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")", ec)) { 1718b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")", 1719b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(date, str.remove()), 1720b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(parsedate, str2.remove())); 1721b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1722b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1723b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1724b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else if (uprv_strcmp(control, "pf") == 0) { 1725b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // 'p' 1726b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* string = data[i++]; 1727b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* datestr = data[i++]; 1728b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date = ref.parse(ctou(datestr), ec); 1729b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!assertSuccess("parse", ec)) return; 1730b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate parsedate = fmt.parse(ctou(string), ec); 1731b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (assertSuccess((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")", ec)) { 1732b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")", 1733b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(date, str.remove()), 1734b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(parsedate, str2.remove())); 1735b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1736b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // 'f' 1737b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru string = data[i++]; 1738b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".format(" + datestr + ")", 1739b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ctou(string), 1740b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.format(date, str.remove())); 1741b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1742b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1743b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else if (uprv_strcmp(control, "F") == 0) { 1744b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* datestr = data[i++]; 1745b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* string = data[i++]; 1746b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date = ref.parse(ctou(datestr), ec); 1747b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!assertSuccess("parse", ec)) return; 1748b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".format(" + datestr + ")", 1749b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ctou(string), 1750b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.format(date, str.remove())); 1751b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1752b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate parsedate = fmt.parse(string, ec); 1753b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (assertSuccess((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")", ec)) { 1754b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")", 1755b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(date, str.remove()), 1756b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(parsedate, str2.remove())); 1757b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1758b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1759b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1760b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else { 1761b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Invalid control string " + control); 1762b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1763b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1764b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1765b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1766b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1767b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1768b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test formatting. Input is an array that starts 1769b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * with the following header: 1770b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1771b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [0] = pattern string to parse [i+2] with 1772b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1773b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * followed by test cases, each of which is 3 array elements: 1774b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1775b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i] = pattern, or null to reuse prior pattern 1776b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i+1] = data string a 1777b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i+2] = data string b 1778b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1779b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Examples: 1780b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Format date [i+1] and expect string [i+2]. 1781b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1782b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * "y/M/d H:mm:ss.SSSS", "2004/3/10 16:36:31.5679", "2004 03 10 16:36:31.567" 1783b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1784b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::expectFormat(const char** data, int32_t data_length, 1785b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const Locale& loc) { 1786b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t i = 0; 1787b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 1788b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString str, str2; 1789b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat fmt("", loc, ec); 1790b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat ref(data[i++], loc, ec); 1791b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat univ("EE G yyyy MM dd HH:mm:ss.SSS z", loc, ec); 179250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(ec)) { 179350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail construct SimpleDateFormat: %s", u_errorName(ec)); 179450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 179550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 1796b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1797b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString currentPat; 1798b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1799b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru while (i<data_length) { 1800b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* pattern = data[i++]; 1801b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (pattern != NULL) { 1802b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.applyPattern(pattern); 1803b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru currentPat = pattern; 1804b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1805b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1806b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* datestr = data[i++]; 1807b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* string = data[i++]; 1808b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date = ref.parse(ctou(datestr), ec); 1809b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!assertSuccess("parse", ec)) return; 1810b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".format(" + datestr + ")", 1811b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ctou(string), 1812b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.format(date, str.remove())); 1813b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1814b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1815b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1816b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestGenericTime() { 1817b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // any zone pattern should parse any zone 1818b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const Locale en("en"); 1819b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* ZDATA[] = { 1820b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm zzz", 1821b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // round trip 1822b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm zzzz", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 Pacific Standard Time", 1823b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm zzz", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 PST", 1824b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm vvvv", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 Pacific Time", 1825b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm v", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 PT", 1826b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // non-generic timezone string influences dst offset even if wrong for date/time 1827b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1828b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1829b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1830b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1831b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // generic timezone generates dst offset appropriate for local time 1832b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1833b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1834b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1835b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1836b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // daylight savings time transition edge cases. 1837b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // time to parse does not really exist, PT interpreted as earlier time 1838b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1839b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1840b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1841b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1842b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1843b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1844b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm", "pf", "2005/4/3 2:30", "2005 04 03 03:30 PDT", "2005/4/3 3:30", 1845b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // time to parse is ambiguous, PT interpreted as later time 1846b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1847b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1848b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1849b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1850b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1851b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1852b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1853b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1854b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1855b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1856b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm", "pf", "2004/10/31 1:30", "2004 10 31 01:30 PST", "2004/10/31 1:30", 1857b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1858b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t ZDATA_length = sizeof(ZDATA)/ sizeof(ZDATA[0]); 1859b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(ZDATA, ZDATA_length, en); 1860b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1861b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 1862b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1863b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("cross format/parse tests"); 1864b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString basepat("yy/MM/dd H:mm "); 186550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho SimpleDateFormat formats[] = { 1866b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat(basepat + "vvv", en, status), 1867b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat(basepat + "vvvv", en, status), 1868b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat(basepat + "zzz", en, status), 1869b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat(basepat + "zzzz", en, status) 1870b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 187150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(status)) { 187250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail construct SimpleDateFormat: %s", u_errorName(status)); 187350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 187450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 1875b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t formats_length = sizeof(formats)/sizeof(formats[0]); 1876b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1877b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString test; 1878b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat univ("yyyy MM dd HH:mm zzz", en, status); 1879b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 188050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho const UnicodeString times[] = { 188150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho "2004 01 02 03:04 PST", 188250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho "2004 07 08 09:10 PDT" 1883b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1884b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t times_length = sizeof(times)/sizeof(times[0]); 1885b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int i = 0; i < times_length; ++i) { 1886b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d = univ.parse(times[i], status); 1887b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(UnicodeString("\ntime: ") + d); 1888b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int j = 0; j < formats_length; ++j) { 1889b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru test.remove(); 1890b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru formats[j].format(d, test); 1891b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("\ntest: '" + test + "'"); 1892b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int k = 0; k < formats_length; ++k) { 1893b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate t = formats[k].parse(test, status); 1894b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_SUCCESS(status)) { 1895b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (d != t) { 189650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln((UnicodeString)"FAIL: format " + k + 189750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho " incorrectly parsed output of format " + j + 1898b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru " (" + test + "), returned " + 1899b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateToString(t) + " instead of " + dateToString(d)); 1900b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 1901b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"OK: format " + k + " parsed ok"); 1902b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1903b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else if (status == U_PARSE_ERROR) { 190450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln((UnicodeString)"FAIL: format " + k + 190550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho " could not parse output of format " + j + 1906b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru " (" + test + ")"); 1907b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1908b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1909b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1910b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1911b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1912b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1913b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestGenericTimeZoneOrder() { 1914b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // generic times should parse the same no matter what the placement of the time zone string 1915b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // should work for standard and daylight times 1916b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1917b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* XDATA[] = { 1918b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm zzz", 1919b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // standard time, explicit daylight/standard 1920b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1921b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1922b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1923b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1924b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // standard time, generic 1925b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1926b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1927b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1928b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1929b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // dahylight time, explicit daylight/standard 1930b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1931b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1932b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1933b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1934b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // daylight time, generic 1935b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1936b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1937b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1938b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1939b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t XDATA_length = sizeof(XDATA)/sizeof(XDATA[0]); 1940b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale en("en"); 1941b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(XDATA, XDATA_length, en); 1942b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1943b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1944b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestZTimeZoneParsing(void) { 1945b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 1946b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const Locale en("en"); 1947b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString test; 1948b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //SimpleDateFormat univ("yyyy-MM-dd'T'HH:mm Z", en, status); 1949b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat univ("HH:mm Z", en, status); 195050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (failure(status, "construct SimpleDateFormat", TRUE)) return; 1951b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const TimeZone *t = TimeZone::getGMT(); 1952b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.setTimeZone(*t); 195350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1954b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.setLenient(false); 1955b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition pp(0); 1956b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru struct { 1957b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString input; 1958b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString expected_result; 1959b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } tests[] = { 1960b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "11:00 -0200", "13:00 +0000" }, 1961b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "11:00 +0200", "09:00 +0000" }, 1962b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "11:00 +0400", "07:00 +0000" }, 1963b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "11:00 +0530", "05:30 +0000" } 1964b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1965b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1966b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result; 1967b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t tests_length = sizeof(tests)/sizeof(tests[0]); 1968b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int i = 0; i < tests_length; ++i) { 1969b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru pp.setIndex(0); 1970b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d = univ.parse(tests[i].input, pp); 1971b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(pp.getIndex() != tests[i].input.length()){ 1972b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("setZoneString() did not succeed. Consumed: %i instead of %i", 197350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho pp.getIndex(), tests[i].input.length()); 1974b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 197550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 1976b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru result.remove(); 1977b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(d, result); 1978b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(result != tests[i].expected_result) { 1979b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("Expected " + tests[i].expected_result 1980b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru + " got " + result); 1981b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1982b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1983b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("SUCCESS: Parsed " + tests[i].input 1984b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru + " got " + result 1985b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru + " expected " + tests[i].expected_result); 1986b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1987b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1988b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1989b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestHost(void) 1990b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1991b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifdef U_WINDOWS 1992b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Win32DateTimeTest::testLocales(this); 1993b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 1994b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1995b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1996b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// Relative Date Tests 1997b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 199850294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovoid DateFormatTest::TestRelative(int daysdelta, 1999b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const Locale& loc, 2000b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *expectChars) { 2001b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru char banner[25]; 2002b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru sprintf(banner, "%d", daysdelta); 2003b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString bannerStr(banner, ""); 200450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2005b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 200650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2007b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru FieldPosition pos(0); 2008b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString test; 2009b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale en("en"); 2010b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *fullrelative = DateFormat::createDateInstance(DateFormat::kFullRelative, loc); 2011b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2012b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fullrelative == NULL) { 201385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("DateFormat::createDateInstance(DateFormat::kFullRelative, %s) returned NULL", loc.getName()); 2014b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 2015b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2016b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2017b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *full = DateFormat::createDateInstance(DateFormat::kFull , loc); 201850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2019b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (full == NULL) { 2020b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("DateFormat::createDateInstance(DateFormat::kFull, %s) returned NULL", loc.getName()); 2021b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 2022b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 202350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2024b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *en_full = DateFormat::createDateInstance(DateFormat::kFull, en); 202550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2026b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (en_full == NULL) { 2027b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("DateFormat::createDateInstance(DateFormat::kFull, en) returned NULL"); 2028b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 2029b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 203050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2031b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *en_fulltime = DateFormat::createDateTimeInstance(DateFormat::kFull,DateFormat::kFull,en); 203250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2033b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (en_fulltime == NULL) { 2034b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, en) returned NULL"); 2035b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 2036b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 203750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2038b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result; 2039b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString normalResult; 2040b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString expect; 2041b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString parseResult; 204250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2043b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Calendar *c = Calendar::createInstance(status); 2044b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2045b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Today = Today 2046b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru c->setTime(Calendar::getNow(), status); 2047b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(daysdelta != 0) { 2048b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru c->add(Calendar::DATE,daysdelta,status); 2049b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2050b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 2051b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2052b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // calculate the expected string 2053b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(expectChars != NULL) { 2054b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect = expectChars; 2055b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 2056b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full->format(*c, expect, pos); // expected = normal full 2057b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 205850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2059b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fullrelative ->format(*c, result, pos); 2060b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru en_full ->format(*c, normalResult, pos); 206150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2062b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(result != expect) { 2063b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: Relative Format ["+bannerStr+"] of "+normalResult+" failed, expected "+expect+" but got " + result); 2064b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 2065b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("PASS: Relative Format ["+bannerStr+"] of "+normalResult+" got " + result); 2066b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 206750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 206850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2069b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //verify 2070b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d = fullrelative->parse(result, status); 2071b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 207250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2073b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString parseFormat; // parse rel->format full 2074b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru en_full->format(d, parseFormat, status); 207550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2076b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString origFormat; 2077b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru en_full->format(*c, origFormat, pos); 207850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2079b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(parseFormat!=origFormat) { 2080b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: Relative Parse ["+bannerStr+"] of "+result+" failed, expected "+parseFormat+" but got "+origFormat); 2081b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 2082b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("PASS: Relative Parse ["+bannerStr+"] of "+result+" passed, got "+parseFormat); 2083b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2084b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2085b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete full; 2086b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fullrelative; 2087b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete en_fulltime; 2088b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete en_full; 2089b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete c; 2090b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 2091b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2092b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2093b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestRelative(void) 2094b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 2095b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale en("en"); 2096b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( 0, en, "Today"); 2097b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative(-1, en, "Yesterday"); 2098b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( 1, en, "Tomorrow"); 2099b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( 2, en, NULL); 2100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( -2, en, NULL); 2101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( 3, en, NULL); 2102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( -3, en, NULL); 2103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( 300, en, NULL); 2104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( -300, en, NULL); 2105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 2106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestRelativeClone(void) 2108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 2109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 2110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Verify that a cloned formatter gives the same results 2111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru and is useable after the original has been deleted. 2112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 2113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 2114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale loc("en"); 2115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate now = Calendar::getNow(); 2116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *full = DateFormat::createDateInstance(DateFormat::kFullRelative, loc); 2117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (full == NULL) { 211885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("FAIL: Can't create Relative date instance"); 2119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 2120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result1; 2122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full->format(now, result1, status); 2123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Format *fullClone = full->clone(); 2124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete full; 2125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full = NULL; 2126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result2; 2128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fullClone->format(now, result2, status); 2129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 2130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (result1 != result2) { 2131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: Clone returned different result from non-clone."); 2132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fullClone; 2134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 2135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestHostClone(void) 2137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 2138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 2139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Verify that a cloned formatter gives the same results 2140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru and is useable after the original has been deleted. 2141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 2142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // This is mainly important on Windows. 2143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 2144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale loc("en_US@compat=host"); 2145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate now = Calendar::getNow(); 2146b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *full = DateFormat::createDateInstance(DateFormat::kFull, loc); 2147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (full == NULL) { 214885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("FAIL: Can't create Relative date instance"); 2149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 2150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result1; 2152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full->format(now, result1, status); 2153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Format *fullClone = full->clone(); 2154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete full; 2155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full = NULL; 2156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result2; 2158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fullClone->format(now, result2, status); 2159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 2160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (result1 != result2) { 2161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: Clone returned different result from non-clone."); 2162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fullClone; 2164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 2165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestTimeZoneDisplayName() 2167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 2168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // This test data was ported from ICU4J. Don't know why the 6th column in there because it's not being 2169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // used currently. 2170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *fallbackTests[][6] = { 2171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 2172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00", "-8:00" }, 2173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "PST", "America/Los_Angeles" }, 2174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "V", "PST", "America/Los_Angeles" }, 2175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "Pacific Standard Time", "America/Los_Angeles" }, 2176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 2177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" }, 2178b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "PDT", "America/Los_Angeles" }, 2179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "V", "PDT", "America/Los_Angeles" }, 2180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "Pacific Daylight Time", "America/Los_Angeles" }, 2181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "PT", "America/Los_Angeles" }, 2182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "Pacific Time", "America/Los_Angeles" }, 2183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "VVVV", "United States (Los Angeles)", "America/Los_Angeles" }, 2184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en_GB", "America/Los_Angeles", "2004-01-15T12:00:00Z", "z", "PST", "America/Los_Angeles" }, 2185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "Z", "-0700", "-7:00" }, 2186b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" }, 2187b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "z", "MST", "America/Phoenix" }, 2188b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "V", "MST", "America/Phoenix" }, 2189b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "zzzz", "Mountain Standard Time", "America/Phoenix" }, 2190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 2191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" }, 2192b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "z", "MST", "America/Phoenix" }, 2193b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "V", "MST", "America/Phoenix" }, 2194b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "zzzz", "Mountain Standard Time", "America/Phoenix" }, 2195b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "v", "MST", "America/Phoenix" }, 2196b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "vvvv", "Mountain Standard Time", "America/Phoenix" }, 2197b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "VVVV", "United States (Phoenix)", "America/Phoenix" }, 2198b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2199b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2200b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2201b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2202b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "V", "ART", "-3:00" }, 2203b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "Argentina Time", "-3:00" }, 2204b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2205b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2206b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2207b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "V", "ART", "-3:00" }, 2208b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "Argentina Time", "-3:00" }, 2209b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Argentina (Buenos Aires)", "America/Buenos_Aires" }, 2210b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Argentina Time", "America/Buenos_Aires" }, 2211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "VVVV", "Argentina (Buenos Aires)", "America/Buenos_Aires" }, 2212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "V", "ART", "-3:00" }, 2217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "Argentina Time", "-3:00" }, 2218b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2219b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2220b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "V", "ART", "-3:00" }, 2222b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "Argentina Time", "-3:00" }, 2223b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Argentina (Buenos Aires)", "America/Buenos_Aires" }, 2224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Argentina Time", "America/Buenos_Aires" }, 2225b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "VVVV", "Argentina (Buenos Aires)", "America/Buenos_Aires" }, 2226b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2227b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 2228b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "-5:00" }, 2229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-05:00", "-5:00" }, 2230b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-01-15T00:00:00Z", "V", "CST (Cuba)", "-5:00" }, 2231b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "Cuba Standard Time", "-5:00" }, 2232b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 2233b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "-4:00" }, 2234b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-04:00", "-4:00" }, 2235b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "V", "CDT (Cuba)", "-4:00" }, 2236b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "Cuba Daylight Time", "-4:00" }, 2237b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "v", "Cuba Time", "America/Havana" }, 2238b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "Cuba Time", "America/Havana" }, 2239b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "VVVV", "Cuba Time", "America/Havana" }, 2240b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 2242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 2243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" }, 2244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "V", "AEDT", "+11:00" }, 2245b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "Australian Eastern Daylight Time", "+11:00" }, 2246b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 2247b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 2248b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" }, 2249b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "V", "AEST", "+10:00" }, 2250b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "Australian Eastern Standard Time", "+10:00" }, 2251b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "Australia (Sydney)", "Australia/Sydney" }, 2252b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "Eastern Australia Time", "Australia/Sydney" }, 2253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "VVVV", "Australia (Sydney)", "Australia/Sydney" }, 2254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 2256b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 2257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" }, 2258b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "V", "AEDT", "+11:00" }, 2259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "Australian Eastern Daylight Time", "+11:00" }, 2260b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 2261b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 2262b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" }, 2263b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "V", "AEST", "+10:00" }, 2264b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "Australian Eastern Standard Time", "+10:00" }, 2265b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "Australia (Sydney)", "Australia/Sydney" }, 2266b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "Eastern Australia Time", "Australia/Sydney" }, 2267b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "VVVV", "Australia (Sydney)", "Australia/Sydney" }, 2268b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2269b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 2270b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+00:00", "+0:00" }, 2271b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT", "+0:00" }, 2272b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-01-15T00:00:00Z", "V", "GMT", "+0:00" }, 2273b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "Greenwich Mean Time", "+0:00" }, 2274b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 2275b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" }, 2276b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+01:00", "Europe/London" }, 2277b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "V", "BST", "Europe/London" }, 2278b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "British Summer Time", "Europe/London" }, 2279b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu en.txt has exemplar city for this time zone 2280b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "v", "United Kingdom Time", "Europe/London" }, 2281b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "United Kingdom Time", "Europe/London" }, 2282b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "VVVV", "United Kingdom Time", "Europe/London" }, 2283b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2284b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2285b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2286b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2287b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2288b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2289b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2290b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2291b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2292b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-03:00", "-3:00" }, 2293b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00" }, 2294b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2295b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // JB#5150 2296b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 2297b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 2298b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+05:30", "+5:30" }, 2299b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "V", "IST", "+5:30" }, 2300b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "India Standard Time", "+5:30" }, 2301b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 2302b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 2303b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+05:30", "+05:30" }, 2304b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "V", "IST", "+05:30" }, 2305b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "India Standard Time", "+5:30" }, 2306b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "India Time", "Asia/Calcutta" }, 2307b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "India Standard Time", "Asia/Calcutta" }, 230850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2309b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // ========== 2310b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2311b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 2312b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00", "-8:00" }, 2313b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-08:00", "-8:00" }, 2314b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "GMT-08:00", "-8:00" }, 2315b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 2316b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" }, 2317b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-07:00", "-7:00" }, 2318b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "GMT-07:00", "-7:00" }, 2319b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "Vereinigte Staaten (Los Angeles)", "America/Los_Angeles" }, 2320b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "Vereinigte Staaten (Los Angeles)", "America/Los_Angeles" }, 2321b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2322b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2323b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2324b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2325b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2326b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2327b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2328b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2329b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2330b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Argentinien (Buenos Aires)", "America/Buenos_Aires" }, 2331b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Argentinien (Buenos Aires)", "America/Buenos_Aires" }, 2332b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2333b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2334b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2335b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2336b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2337b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2338b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2339b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2340b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2341b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Argentinien (Buenos Aires)", "America/Buenos_Aires" }, 2342b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Argentinien (Buenos Aires)", "America/Buenos_Aires" }, 2343b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2344b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 2345b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "-5:00" }, 2346b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-05:00", "-5:00" }, 2347b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-05:00", "-5:00" }, 2348b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 2349b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "-4:00" }, 2350b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-04:00", "-4:00" }, 2351b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-04:00", "-4:00" }, 235250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { "de", "America/Havana", "2004-07-15T00:00:00Z", "v", "(Kuba)", "America/Havana" }, 235350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { "de", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "(Kuba)", "America/Havana" }, 2354b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // added to test proper fallback of country name 235550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { "de_CH", "America/Havana", "2004-07-15T00:00:00Z", "v", "(Kuba)", "America/Havana" }, 235650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { "de_CH", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "(Kuba)", "America/Havana" }, 2357b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2358b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 2359b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 2360b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" }, 2361b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" }, 2362b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 2363b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 2364b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" }, 2365b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" }, 2366b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "Australien (Sydney)", "Australia/Sydney" }, 2367b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "Australien (Sydney)", "Australia/Sydney" }, 2368b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2369b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 2370b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 2371b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" }, 2372b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" }, 2373b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 2374b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 2375b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" }, 2376b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" }, 2377b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "Australien (Sydney)", "Australia/Sydney" }, 2378b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "Australien (Sydney)", "Australia/Sydney" }, 2379b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2380b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 2381b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+00:00", "+0:00" }, 2382b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT+00:00", "+0:00" }, 2383b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "GMT+00:00", "+0:00" }, 2384b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 2385b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" }, 2386b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+01:00", "+1:00" }, 2387b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+01:00", "+1:00" }, 238850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { "de", "Europe/London", "2004-07-15T00:00:00Z", "v", "(Vereinigtes K\\u00f6nigreich)", "Europe/London" }, 238950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { "de", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "(Vereinigtes K\\u00f6nigreich)", "Europe/London" }, 2390b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2391b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2392b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2393b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2394b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2395b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2396b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2397b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2398b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2399b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-03:00", "-3:00" }, 2400b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00" }, 2401b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2402b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // JB#5150 2403b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 2404b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 2405b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+05:30", "+5:30" }, 2406b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" }, 2407b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 2408b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 2409b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+05:30", "+05:30" }, 2410b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" }, 241150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "(Indien)", "Asia/Calcutta" }, 241250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "(Indien)", "Asia/Calcutta" }, 2413b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2414b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // ========== 2415b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2416b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 241785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0800", "-8:00" }, 241885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0800", "America/Los_Angeles" }, 2419b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "\\u592a\\u5e73\\u6d0b\\u6807\\u51c6\\u65f6\\u95f4", "America/Los_Angeles" }, 2420b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 242185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0700", "-7:00" }, 242285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0700", "America/Los_Angeles" }, 2423b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "\\u592a\\u5e73\\u6d0b\\u590f\\u4ee4\\u65f6\\u95f4", "America/Los_Angeles" }, 2424b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu zh.txt has exemplar city for this time zone 2425b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "\\u7f8e\\u56fd (\\u6d1b\\u6749\\u77f6)", "America/Los_Angeles" }, 242685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\\u7f8e\\u56fd\\u592a\\u5e73\\u6d0b\\u65f6\\u95f4", "America/Los_Angeles" }, 2427b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2428b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 242985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 243085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 243185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u963f\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "-3:00" }, 2432b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 243385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 243485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 243585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u963f\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "-3:00" }, 2436b13da9df870a61b11249bf741347908dbea0edd8Jean-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" }, 243785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u963f\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "America/Buenos_Aires" }, 2438b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2439b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 244085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 244185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 244285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u963f\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "-3:00" }, 2443b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 244485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 244585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 244685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u963f\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "-3:00" }, 2447b13da9df870a61b11249bf741347908dbea0edd8Jean-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" }, 244885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u963f\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "America/Buenos_Aires" }, 2449b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2450b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 245185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0500", "-5:00" }, 245285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0500", "-5:00" }, 245385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "\\u53e4\\u5df4\\u6807\\u51c6\\u65f6\\u95f4", "-5:00" }, 2454b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 245585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0400", "-4:00" }, 245685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0400", "-4:00" }, 245785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "\\u53e4\\u5df4\\u590f\\u4ee4\\u65f6\\u95f4", "-4:00" }, 245885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-07-15T00:00:00Z", "v", "\\u53e4\\u5df4\\u65f6\\u95f4", "America/Havana" }, 245985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\\u53e4\\u5df4\\u65f6\\u95f4", "America/Havana" }, 2460b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2461b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 246285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1100", "+11:00" }, 246385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1100", "+11:00" }, 2464b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "\\u6fb3\\u5927\\u5229\\u4e9a\\u4e1c\\u90e8\\u590f\\u4ee4\\u65f6\\u95f4", "+11:00" }, 2465b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 246685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1000", "+10:00" }, 246785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1000", "+10:00" }, 246885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "\\u6fb3\\u5927\\u5229\\u4e9a\\u4e1c\\u90e8\\u6807\\u51c6\\u65f6\\u95f4", "+10:00" }, 2469b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu zh.txt does not have info for this time zone 2470b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\\u6fb3\\u5927\\u5229\\u4e9a (\\u6089\\u5c3c)", "Australia/Sydney" }, 247185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\\u6fb3\\u5927\\u5229\\u4e9a\\u4e1c\\u90e8\\u65f6\\u95f4", "Australia/Sydney" }, 2472b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2473b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 247485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1100", "+11:00" }, 247585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1100", "+11:00" }, 2476b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "\\u6fb3\\u5927\\u5229\\u4e9a\\u4e1c\\u90e8\\u590f\\u4ee4\\u65f6\\u95f4", "+11:00" }, 2477b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 247885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1000", "+10:00" }, 247985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1000", "+10:00" }, 248085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "\\u6fb3\\u5927\\u5229\\u4e9a\\u4e1c\\u90e8\\u6807\\u51c6\\u65f6\\u95f4", "+10:00" }, 2481b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\\u6fb3\\u5927\\u5229\\u4e9a (\\u6089\\u5c3c)", "Australia/Sydney" }, 248285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\\u6fb3\\u5927\\u5229\\u4e9a\\u4e1c\\u90e8\\u65f6\\u95f4", "Australia/Sydney" }, 2483b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2484b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 248585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0000", "+0:00" }, 248685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Europe/London", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0000", "+0:00" }, 2487b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Europe/London", "2004-01-15T00:00:00Z", "V", "GMT", "+0:00" }, 2488b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "\\u683C\\u6797\\u5C3C\\u6CBB\\u6807\\u51C6\\u65F6\\u95F4", "+0:00" }, 2489b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 249085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0100", "+1:00" }, 249185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Europe/London", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0100", "+1:00" }, 2492b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Europe/London", "2004-07-15T00:00:00Z", "V", "BST", "+1:00" }, 249385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0100", "+1:00" }, 249485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Europe/London", "2004-07-15T00:00:00Z", "v", "\\u82f1\\u56fd\\u65f6\\u95f4", "Europe/London" }, 249585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\\u82f1\\u56fd\\u65f6\\u95f4", "Europe/London" }, 249685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Europe/London", "2004-07-15T00:00:00Z", "VVVV", "\\u82f1\\u56fd\\u65f6\\u95f4", "Europe/London" }, 2497b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2498b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 249985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 250085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 250185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 2502b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 250385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 250485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 250585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 250685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 250785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 2508b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2509b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // JB#5150 2510b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 251185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0530", "+5:30" }, 251285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0530", "+5:30" }, 251385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "\\u5370\\u5ea6\\u6807\\u51c6\\u65f6\\u95f4", "+5:30" }, 2514b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 251585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0530", "+5:30" }, 251685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0530", "+05:30" }, 251785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "\\u5370\\u5ea6\\u6807\\u51c6\\u65f6\\u95f4", "+5:30" }, 251885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "\\u5370\\u5ea6\\u65f6\\u95f4", "Asia/Calcutta" }, 251985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\\u5370\\u5ea6\\u6807\\u51c6\\u65f6\\u95f4", "Asia/Calcutta" }, 2520b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2521b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // ========== 2522b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2523b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 2524b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u096e:\\u0966\\u0966", "-8:00" }, 2525b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-\\u0966\\u096e:\\u0966\\u0966", "-8:00" }, 2526b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "GMT-\\u0966\\u096e:\\u0966\\u0966", "-8:00" }, 2527b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 2528b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u096d:\\u0966\\u0966", "-7:00" }, 2529b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-\\u0966\\u096d:\\u0966\\u0966", "-7:00" }, 2530b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "GMT-\\u0966\\u096d:\\u0966\\u0966", "-7:00" }, 253185bf2e2fbc60a9f938064abc8127d61da7d19882Claire 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" }, 253285bf2e2fbc60a9f938064abc8127d61da7d19882Claire 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" }, 2533b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2534b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2535b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2536b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2537b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2538b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2539b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2540b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2541b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 254285bf2e2fbc60a9f938064abc8127d61da7d19882Claire 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" }, 254385bf2e2fbc60a9f938064abc8127d61da7d19882Claire 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" }, 2544b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2545b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2546b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2547b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2548b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2549b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2550b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2551b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2552b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 255385bf2e2fbc60a9f938064abc8127d61da7d19882Claire 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" }, 255485bf2e2fbc60a9f938064abc8127d61da7d19882Claire 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" }, 2555b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2556b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 2557b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u096b:\\u0966\\u0966", "-5:00" }, 2558b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-\\u0966\\u096b:\\u0966\\u0966", "-5:00" }, 2559b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-\\u0966\\u096b:\\u0966\\u0966", "-5:00" }, 2560b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 2561b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u096a:\\u0966\\u0966", "-4:00" }, 2562b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-\\u0966\\u096a:\\u0966\\u0966", "-4:00" }, 2563b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-\\u0966\\u096a:\\u0966\\u0966", "-4:00" }, 256450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { "hi", "America/Havana", "2004-07-15T00:00:00Z", "v", "(\\u0915\\u094d\\u092f\\u0942\\u092c\\u093e)", "America/Havana" }, 256550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { "hi", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "(\\u0915\\u094d\\u092f\\u0942\\u092c\\u093e)", "America/Havana" }, 2566b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2567b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 2568b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+\\u0967\\u0967:\\u0966\\u0966", "+11:00" }, 2569b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+\\u0967\\u0967:\\u0966\\u0966", "+11:00" }, 2570b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "GMT+\\u0967\\u0967:\\u0966\\u0966", "+11:00" }, 2571b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 2572b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+\\u0967\\u0966:\\u0966\\u0966", "+10:00" }, 2573b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+\\u0967\\u0966:\\u0966\\u0966", "+10:00" }, 2574b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "GMT+\\u0967\\u0966:\\u0966\\u0966", "+10:00" }, 257585bf2e2fbc60a9f938064abc8127d61da7d19882Claire 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" }, 257685bf2e2fbc60a9f938064abc8127d61da7d19882Claire 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" }, 2577b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2578b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 2579b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+\\u0967\\u0967:\\u0966\\u0966", "+11:00" }, 2580b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+\\u0967\\u0967:\\u0966\\u0966", "+11:00" }, 2581b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "GMT+\\u0967\\u0967:\\u0966\\u0966", "+11:00" }, 2582b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 2583b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+\\u0967\\u0966:\\u0966\\u0966", "+10:00" }, 2584b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+\\u0967\\u0966:\\u0966\\u0966", "+10:00" }, 2585b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "GMT+\\u0967\\u0966:\\u0966\\u0966", "+10:00" }, 258685bf2e2fbc60a9f938064abc8127d61da7d19882Claire 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" }, 258785bf2e2fbc60a9f938064abc8127d61da7d19882Claire 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" }, 2588b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2589b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 2590b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+\\u0966\\u0966:\\u0966\\u0966", "+0:00" }, 2591b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT+\\u0966\\u0966:\\u0966\\u0966", "+0:00" }, 2592b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "GMT+\\u0966\\u0966:\\u0966\\u0966", "+0:00" }, 2593b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 2594b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+\\u0966\\u0967:\\u0966\\u0966", "+1:00" }, 2595b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+\\u0966\\u0967:\\u0966\\u0966", "+1:00" }, 2596b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+\\u0966\\u0967:\\u0966\\u0966", "+1:00" }, 259750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { "hi", "Europe/London", "2004-07-15T00:00:00Z", "v", "(\\u092C\\u094D\\u0930\\u093F\\u0924\\u0928)", "Europe/London" }, 259850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { "hi", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "(\\u092C\\u094D\\u0930\\u093F\\u0924\\u0928)", "Europe/London" }, 2599b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2600b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2601b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2602b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2603b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2604b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2605b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2606b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2607b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2608b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2609b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2610b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2611b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 2612b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+\\u0966\\u096B:\\u0969\\u0966", "+5:30" }, 2613b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "IST", "+5:30" }, 2614b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "\\u092D\\u093E\\u0930\\u0924\\u0940\\u092F \\u0938\\u092E\\u092F", "+5:30" }, 2615b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 2616b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+\\u0966\\u096B:\\u0969\\u0966", "+5:30" }, 2617b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "IST", "+05:30" }, 2618b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "\\u092D\\u093E\\u0930\\u0924\\u0940\\u092F \\u0938\\u092E\\u092F", "+5:30" }, 2619b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "IST", "Asia/Calcutta" }, 2620b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\\u092D\\u093E\\u0930\\u0924\\u0940\\u092F \\u0938\\u092E\\u092F", "Asia/Calcutta" }, 2621b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2622b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // ========== 2623b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2624b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 262585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0800", "-8:00" }, 262685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0800", "America/Los_Angeles" }, 2627b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "V", "PST", "America/Los_Angeles" }, 2628b13da9df870a61b11249bf741347908dbea0edd8Jean-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" }, 2629b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 263085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0700", "-7:00" }, 263185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0700", "America/Los_Angeles" }, 2632b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "V", "PDT", "America/Los_Angeles" }, 2633b13da9df870a61b11249bf741347908dbea0edd8Jean-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" }, 2634b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu bg.txt has exemplar city for this time zone 2635b13da9df870a61b11249bf741347908dbea0edd8Jean-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" }, 2636b13da9df870a61b11249bf741347908dbea0edd8Jean-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" }, 2637b13da9df870a61b11249bf741347908dbea0edd8Jean-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" }, 2638b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2639b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 264085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 264185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 264285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 2643b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 264485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 264585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 264685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 2647b13da9df870a61b11249bf741347908dbea0edd8Jean-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" }, 2648b13da9df870a61b11249bf741347908dbea0edd8Jean-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" }, 2649b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2650b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 265185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 265285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 265385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 2654b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 265585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 265685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 265785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 2658b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu bg.txt does not have info for this time zone 2659b13da9df870a61b11249bf741347908dbea0edd8Jean-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" }, 2660b13da9df870a61b11249bf741347908dbea0edd8Jean-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" }, 2661b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2662b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 266385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0500", "-5:00" }, 266485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Havana", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0500", "-5:00" }, 266585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0500", "-5:00" }, 2666b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 266785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0400", "-4:00" }, 266885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Havana", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0400", "-4:00" }, 266985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0400", "-4:00" }, 267050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { "bg", "America/Havana", "2004-07-15T00:00:00Z", "v", "(\\u041a\\u0443\\u0431\\u0430)", "America/Havana" }, 267150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { "bg", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "(\\u041a\\u0443\\u0431\\u0430)", "America/Havana" }, 2672b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2673b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 267485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1100", "+11:00" }, 267585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1100", "+11:00" }, 267685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1100", "+11:00" }, 2677b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 267885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1000", "+10:00" }, 267985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1000", "+10:00" }, 268085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1000", "+10:00" }, 2681b13da9df870a61b11249bf741347908dbea0edd8Jean-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" }, 2682b13da9df870a61b11249bf741347908dbea0edd8Jean-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" }, 2683b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2684b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 268585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1100", "+11:00" }, 268685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1100", "+11:00" }, 268785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1100", "+11:00" }, 2688b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 268985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1000", "+10:00" }, 269085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1000", "+10:00" }, 269185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1000", "+10:00" }, 2692b13da9df870a61b11249bf741347908dbea0edd8Jean-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" }, 2693b13da9df870a61b11249bf741347908dbea0edd8Jean-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" }, 2694b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2695b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 269685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0000", "+0:00" }, 269785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Europe/London", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0000", "+0:00" }, 2698b13da9df870a61b11249bf741347908dbea0edd8Jean-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" }, 2699b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 270085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0100", "+1:00" }, 270185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Europe/London", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0100", "+1:00" }, 270285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0100", "+1:00" }, 270350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { "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" }, 270450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { "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" }, 2705b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2706b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 270785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 270885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 270985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 2710b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 271185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 271285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 271385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 271485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 271585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 2716b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2717b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // JB#5150 2718b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 271985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0530", "+5:30" }, 272085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0530", "+5:30" }, 272185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0530", "+5:30" }, 2722b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 272385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0530", "+5:30" }, 272485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0530", "+05:30" }, 272585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0530", "+5:30" }, 272650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "(\\u0418\\u043D\\u0434\\u0438\\u044F)", "Asia/Calcutta" }, 272750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "(\\u0418\\u043D\\u0434\\u0438\\u044F)", "Asia/Calcutta" }, 2728b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // ========== 2729b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2730b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 273185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00", "-8:00" }, 273285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-08:00", "America/Los_Angeles" }, 2733b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "V", "PST", "America/Los_Angeles" }, 273485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "\\u30a2\\u30e1\\u30ea\\u30ab\\u592a\\u5e73\\u6d0b\\u6a19\\u6e96\\u6642", "America/Los_Angeles" }, 273585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-700" }, 273685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" }, 273785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-07:00", "America/Los_Angeles" }, 2738b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "V", "PDT", "America/Los_Angeles" }, 273985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "\\u30a2\\u30e1\\u30ea\\u30ab\\u592a\\u5e73\\u6d0b\\u590f\\u6642\\u9593", "America/Los_Angeles" }, 2740b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu ja.txt has exemplar city for this time zone 2741b13da9df870a61b11249bf741347908dbea0edd8Jean-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" }, 274285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\\u30A2\\u30E1\\u30EA\\u30AB\\u592A\\u5e73\\u6D0B\\u6642\\u9593", "America/Los_Angeles" }, 2743b13da9df870a61b11249bf741347908dbea0edd8Jean-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" }, 2744b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2745b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 274685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 274785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 274885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2749b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 275085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 275185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 275285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2753b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu ja.txt does not have info for this time zone 275485bf2e2fbc60a9f938064abc8127d61da7d19882Claire 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" }, 275585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u30a2\\u30eb\\u30bc\\u30f3\\u30c1\\u30f3\\u6642\\u9593", "America/Buenos_Aires" }, 2756b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2757b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 275885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 275985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 276085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2761b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 276285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 276385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 276485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 276585bf2e2fbc60a9f938064abc8127d61da7d19882Claire 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" }, 276685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u30a2\\u30eb\\u30bc\\u30f3\\u30c1\\u30f3\\u6642\\u9593", "America/Buenos_Aires" }, 2767b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2768b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 276985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "-5:00" }, 277085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-05:00", "-5:00" }, 277185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-05:00", "-5:00" }, 2772b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 277385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "-4:00" }, 277485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-04:00", "-4:00" }, 277585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-04:00", "-4:00" }, 2776b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Havana", "2004-07-15T00:00:00Z", "v", "\\u30ad\\u30e5\\u30fc\\u30d0\\u6642\\u9593", "America/Havana" }, 2777b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\\u30ad\\u30e5\\u30fc\\u30d0\\u6642\\u9593", "America/Havana" }, 2778b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2779b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 278085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 278185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" }, 278285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" }, 2783b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 278485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 278585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" }, 278685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" }, 2787b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu ja.txt does not have info for this time zone 278885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\\u30aa\\u30fc\\u30b9\\u30c8\\u30e9\\u30ea\\u30a2 (\\u30b7\\u30c9\\u30cb\\u30fc)", "Australia/Sydney" }, 278985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\\u30aa\\u30fc\\u30b9\\u30c8\\u30e9\\u30ea\\u30a2 (\\u30b7\\u30c9\\u30cb\\u30fc)", "Australia/Sydney" }, 2790b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2791b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 279285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 279385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" }, 279485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" }, 2795b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 279685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 279785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" }, 279885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" }, 279985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\\u30aa\\u30fc\\u30b9\\u30c8\\u30e9\\u30ea\\u30a2 (\\u30b7\\u30c9\\u30cb\\u30fc)", "Australia/Sydney" }, 280085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\\u30aa\\u30fc\\u30b9\\u30c8\\u30e9\\u30ea\\u30a2 (\\u30b7\\u30c9\\u30cb\\u30fc)", "Australia/Sydney" }, 2801b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2802b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 280385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+00:00", "+0:00" }, 280485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT+00:00", "+0:00" }, 2805b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Europe/London", "2004-01-15T00:00:00Z", "V", "GMT", "+0:00" }, 2806b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "\\u30B0\\u30EA\\u30CB\\u30C3\\u30B8\\u6A19\\u6E96\\u6642", "+0:00" }, 2807b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 280885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" }, 280985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+01:00", "+1:00" }, 281085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Europe/London", "2004-07-15T00:00:00Z", "V", "GMT+01:00", "+1:00" }, 281185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+01:00", "+1:00" }, 2812b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Europe/London", "2004-07-15T00:00:00Z", "v", "\\u30a4\\u30ae\\u30ea\\u30b9\\u6642\\u9593", "Europe/London" }, 2813b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\\u30a4\\u30ae\\u30ea\\u30b9\\u6642\\u9593", "Europe/London" }, 2814b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Europe/London", "2004-07-15T00:00:00Z", "VVVV", "\\u30a4\\u30ae\\u30ea\\u30b9\\u6642\\u9593", "Europe/London" }, 2815b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2816b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 281785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 281885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 281985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2820b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 282185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 282285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 282385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 282485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-03:00", "-3:00" }, 282585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00" }, 2826b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2827b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // JB#5150 2828b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 282985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 283085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+05:30", "+5:30" }, 283185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" }, 2832b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 283385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 283485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+05:30", "+05:30" }, 283585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" }, 2836b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "\\u30A4\\u30F3\\u30C9\\u6642\\u9593", "Asia/Calcutta" }, 2837b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\\u30A4\\u30F3\\u30C9\\u6642\\u9593", "Asia/Calcutta" }, 2838b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2839b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // ========== 2840b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 284185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 284285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00", "-8:00" }, 284385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-08:00", "-8:00" }, 284485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "GMT-08:00", "-8:00" }, 284585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 284685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" }, 284785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-07:00", "-7:00" }, 284885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "GMT-07:00", "-7:00" }, 284985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "US (Los Angeles)", "America/Los_Angeles" }, 285085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "US (Los Angeles)", "America/Los_Angeles" }, 285185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 285285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 285385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 285485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 285585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 285685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 285785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 285885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 285985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 286085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "AR (Buenos Aires)", "America/Buenos_Aires" }, 286185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "AR (Buenos Aires)", "America/Buenos_Aires" }, 286285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 286385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 286485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 286585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 286685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 286785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 286885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 286985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 287085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 287185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "AR (Buenos Aires)", "America/Buenos_Aires" }, 287285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "AR (Buenos Aires)", "America/Buenos_Aires" }, 287385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 287485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 287585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "-5:00" }, 287685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-05:00", "-5:00" }, 287785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-05:00", "-5:00" }, 287885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 287985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "-4:00" }, 288085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-04:00", "-4:00" }, 288185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-04:00", "-4:00" }, 288250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { "si", "America/Havana", "2004-07-15T00:00:00Z", "v", "(CU)", "America/Havana" }, 288350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { "si", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "(CU)", "America/Havana" }, 288485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 288585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 288685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 288785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" }, 288885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" }, 288985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 289085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 289185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" }, 289285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" }, 289385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "AU (Sydney)", "Australia/Sydney" }, 289485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "AU (Sydney)", "Australia/Sydney" }, 289585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 289685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 289785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 289885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" }, 289985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" }, 290085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 290185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 290285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" }, 290385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" }, 290485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "AU (Sydney)", "Australia/Sydney" }, 290585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "AU (Sydney)", "Australia/Sydney" }, 290685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 290785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 290885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+00:00", "+0:00" }, 290985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT+00:00", "+0:00" }, 291085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "GMT+00:00", "+0:00" }, 291185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 291285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" }, 291385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+01:00", "+1:00" }, 291485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+01:00", "+1:00" }, 291550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { "si", "Europe/London", "2004-07-15T00:00:00Z", "v", "(GB)", "Europe/London" }, 291650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { "si", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "(GB)", "Europe/London" }, 291785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 291885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 291985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 292085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 292185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 292285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 292385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 292485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 292585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 292685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-03:00", "-3:00" }, 292785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00" }, 2928b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2929b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // JB#5150 293085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 293185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 293285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+05:30", "+5:30" }, 293385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" }, 293485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 293585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 293685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+05:30", "+05:30" }, 293785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" }, 293850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "(IN)", "Asia/Calcutta" }, 293950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { "si", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "(IN)", "Asia/Calcutta" }, 294085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { NULL, NULL, NULL, NULL, NULL, NULL }, 2941b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 2942b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 294385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UErrorCode status = U_ZERO_ERROR; 294485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Calendar *cal = GregorianCalendar::createInstance(status); 294550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (failure(status, "GregorianCalendar::createInstance", TRUE)) return; 294685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int i = 0; fallbackTests[i][0]; i++) { 294785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho const char **testLine = fallbackTests[i]; 294885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString info[5]; 294985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for ( int j = 0 ; j < 5 ; j++ ) { 295085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho info[j] = UnicodeString(testLine[j], -1, US_INV); 295185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 295285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho info[4] = info[4].unescape(); 295385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln("%s;%s;%s;%s", testLine[0], testLine[1], testLine[2], testLine[3]); 2954b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 295585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho TimeZone *tz = TimeZone::createTimeZone(info[1]); 295685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 295785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (strcmp(testLine[2], "2004-07-15T00:00:00Z") == 0) { 295885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho cal->set(2004,6,15,0,0,0); 295985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } else { 296085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho cal->set(2004,0,15,0,0,0); 296185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 296285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 296385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho SimpleDateFormat fmt(info[3], Locale(testLine[0]),status); 296485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ASSERT_OK(status); 296585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho cal->adoptTimeZone(tz); 296685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString result; 296785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho FieldPosition pos(0); 296885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fmt.format(*cal,result,pos); 296985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (result != info[4]) { 297050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln(info[0] + ";" + info[1] + ";" + info[2] + ";" + info[3] + " expected: '" + 297185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho info[4] + "' but got: '" + result + "'"); 297285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 297385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 297485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete cal; 297585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho} 297685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 297785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hovoid DateFormatTest::TestRoundtripWithCalendar(void) { 297885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UErrorCode status = U_ZERO_ERROR; 297985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 298085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho TimeZone *tz = TimeZone::createTimeZone("Europe/Paris"); 298185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho TimeZone *gmt = TimeZone::createTimeZone("Etc/GMT"); 298285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 298385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Calendar *calendars[] = { 298485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Calendar::createInstance(*tz, Locale("und@calendar=gregorian"), status), 298585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Calendar::createInstance(*tz, Locale("und@calendar=buddhist"), status), 298685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho// Calendar::createInstance(*tz, Locale("und@calendar=hebrew"), status), 298785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Calendar::createInstance(*tz, Locale("und@calendar=islamic"), status), 298885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Calendar::createInstance(*tz, Locale("und@calendar=japanese"), status), 298985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho NULL 299085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho }; 299185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (U_FAILURE(status)) { 299250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Failed to initialize calendars: %s", u_errorName(status)); 299385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int i = 0; calendars[i] != NULL; i++) { 299485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete calendars[i]; 299585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 299685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho return; 299785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 2998b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 299985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho //FIXME The formatters commented out below are currently failing because of 300085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // the calendar calculation problem reported by #6691 300185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 300285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // The order of test formatters must match the order of calendars above. 300385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat *formatters[] = { 300485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale("en_US")), //calendar=gregorian 300585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale("th_TH")), //calendar=buddhist 300685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho// DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale("he_IL@calendar=hebrew")), 300785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale("ar_EG@calendar=islamic")), 300885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho// DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale("ja_JP@calendar=japanese")), 300985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho NULL 301085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho }; 301185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 301285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate d = Calendar::getNow(); 301385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString buf; 301485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho FieldPosition fpos; 301585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ParsePosition ppos; 301685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 301785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int i = 0; formatters[i] != NULL; i++) { 301885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho buf.remove(); 301985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fpos.setBeginIndex(0); 302085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fpos.setEndIndex(0); 302185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho calendars[i]->setTime(d, status); 302285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 302385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // Normal case output - the given calendar matches the calendar 302485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // used by the formatter 302585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho formatters[i]->format(*calendars[i], buf, fpos); 302685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString refStr(buf); 302785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 302885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int j = 0; calendars[j] != NULL; j++) { 302985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (j == i) { 303085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho continue; 303185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 303285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho buf.remove(); 303385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fpos.setBeginIndex(0); 303485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fpos.setEndIndex(0); 303585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho calendars[j]->setTime(d, status); 303685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 303785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // Even the different calendar type is specified, 303885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // we should get the same result. 303985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho formatters[i]->format(*calendars[j], buf, fpos); 304085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (refStr != buf) { 304185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Different format result with a different calendar for the same time -" 304285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Reference calendar type=" + calendars[i]->getType() 304385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Another calendar type=" + calendars[j]->getType() 304485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Expected result=" + refStr 304585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Actual result=" + buf); 3046b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 304785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 3048b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 304985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho calendars[i]->setTimeZone(*gmt); 305085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho calendars[i]->clear(); 305185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ppos.setErrorIndex(-1); 305285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ppos.setIndex(0); 305385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 305485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // Normal case parse result - the given calendar matches the calendar 305585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // used by the formatter 305685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho formatters[i]->parse(refStr, *calendars[i], ppos); 305785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 305885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int j = 0; calendars[j] != NULL; j++) { 305985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (j == i) { 306085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho continue; 306185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 306285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho calendars[j]->setTimeZone(*gmt); 306385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho calendars[j]->clear(); 306485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ppos.setErrorIndex(-1); 306585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ppos.setIndex(0); 306685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 306785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // Even the different calendar type is specified, 306885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // we should get the same time and time zone. 306985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho formatters[i]->parse(refStr, *calendars[j], ppos); 307085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (calendars[i]->getTime(status) != calendars[j]->getTime(status) 307185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho || calendars[i]->getTimeZone() != calendars[j]->getTimeZone()) { 307285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString tzid; 307385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Different parse result with a different calendar for the same string -" 307485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Reference calendar type=" + calendars[i]->getType() 307585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Another calendar type=" + calendars[j]->getType() 307685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Date string=" + refStr 307785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Expected time=" + calendars[i]->getTime(status) 307885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Expected time zone=" + calendars[i]->getTimeZone().getID(tzid) 307985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Actual time=" + calendars[j]->getTime(status) 308085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Actual time zone=" + calendars[j]->getTimeZone().getID(tzid)); 3081b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 3082b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 308385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (U_FAILURE(status)) { 308485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: " + u_errorName(status)); 308585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho break; 308685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 308785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 308885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 308985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete tz; 309085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete gmt; 309185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int i = 0; calendars[i] != NULL; i++) { 309285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete calendars[i]; 309385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 309485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int i = 0; formatters[i] != NULL; i++) { 309585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete formatters[i]; 3096b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 3097b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 3098b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3099b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* 3100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestRelativeError(void) 3101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 3102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status; 3103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale en("en"); 310450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 3105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *en_reltime_reldate = DateFormat::createDateTimeInstance(DateFormat::kFullRelative,DateFormat::kFullRelative,en); 3106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(en_reltime_reldate == NULL) { 3107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("PASS: rel date/rel time failed"); 3108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 3109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: rel date/rel time created, should have failed."); 3110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete en_reltime_reldate; 3111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 3112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 3113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestRelativeOther(void) 3115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 3116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("Nothing in this test. When we get more data from CLDR, put in some tests of -2, +2, etc. "); 3117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 3118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 3119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 312085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hovoid DateFormatTest::Test6338(void) 312185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho{ 312285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UErrorCode status = U_ZERO_ERROR; 312385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 312485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho SimpleDateFormat *fmt1 = new SimpleDateFormat(UnicodeString("y-M-d"), Locale("ar"), status); 312550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (failure(status, "new SimpleDateFormat", TRUE)) return; 312685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 312785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt1 = date(2008-1900, UCAL_JUNE, 10, 12, 00); 312885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str1; 312985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str1 = fmt1->format(dt1, str1); 313085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str1); 313185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 313285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt11 = fmt1->parse(str1, status); 313385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "fmt->parse"); 313485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 313585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str11; 313685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str11 = fmt1->format(dt11, str11); 313785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str11); 313885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 313985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (str1 != str11) { 314085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Different dates str1:" + str1 314185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + " str2:" + str11); 314285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 314385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmt1; 314485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 314585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ///////////////// 314685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 314785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho status = U_ZERO_ERROR; 314885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho SimpleDateFormat *fmt2 = new SimpleDateFormat(UnicodeString("y M d"), Locale("ar"), status); 314985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "new SimpleDateFormat"); 315085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 315185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt2 = date(2008-1900, UCAL_JUNE, 10, 12, 00); 315285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str2; 315385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str2 = fmt2->format(dt2, str2); 315485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str2); 315585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 315685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt22 = fmt2->parse(str2, status); 315785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "fmt->parse"); 315885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 315985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str22; 316085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str22 = fmt2->format(dt22, str22); 316185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str22); 316285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 316385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (str2 != str22) { 316485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Different dates str1:" + str2 316585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + " str2:" + str22); 316685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 316785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmt2; 316885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 316985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ///////////////// 317085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 317185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho status = U_ZERO_ERROR; 317285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho SimpleDateFormat *fmt3 = new SimpleDateFormat(UnicodeString("y-M-d"), Locale("en-us"), status); 317385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "new SimpleDateFormat"); 317485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 317585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt3 = date(2008-1900, UCAL_JUNE, 10, 12, 00); 317685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str3; 317785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str3 = fmt3->format(dt3, str3); 317885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str3); 317985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 318085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt33 = fmt3->parse(str3, status); 318185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "fmt->parse"); 318285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 318385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str33; 318485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str33 = fmt3->format(dt33, str33); 318585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str33); 318685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 318785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (str3 != str33) { 318885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Different dates str1:" + str3 318985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + " str2:" + str33); 319085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 319185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmt3; 319285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 319385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ///////////////// 319485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 319585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho status = U_ZERO_ERROR; 319685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho SimpleDateFormat *fmt4 = new SimpleDateFormat(UnicodeString("y M d"), Locale("en-us"), status); 319785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "new SimpleDateFormat"); 319885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 319985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt4 = date(2008-1900, UCAL_JUNE, 10, 12, 00); 320085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str4; 320185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str4 = fmt4->format(dt4, str4); 320285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str4); 320385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 320485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt44 = fmt4->parse(str4, status); 320585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "fmt->parse"); 320685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 320785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str44; 320885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str44 = fmt4->format(dt44, str44); 320985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str44); 321085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 321185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (str4 != str44) { 321285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Different dates str1:" + str4 321385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + " str2:" + str44); 321485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 321585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmt4; 321685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 321785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho} 321885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 321985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hovoid DateFormatTest::Test6726(void) 322085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho{ 322185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // status 322285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho// UErrorCode status = U_ZERO_ERROR; 322385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 322485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // fmtf, fmtl, fmtm, fmts; 322585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString strf, strl, strm, strs; 322685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt = date(2008-1900, UCAL_JUNE, 10, 12, 00); 322785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 322885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Locale loc("ja"); 322985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat* fmtf = DateFormat::createDateTimeInstance(DateFormat::FULL, DateFormat::FULL, loc); 323085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat* fmtl = DateFormat::createDateTimeInstance(DateFormat::LONG, DateFormat::FULL, loc); 323185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat* fmtm = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, DateFormat::FULL, loc); 323285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat* fmts = DateFormat::createDateTimeInstance(DateFormat::SHORT, DateFormat::FULL, loc); 323385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (fmtf == NULL || fmtl == NULL || fmtm == NULL || fmts == NULL) { 323485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("Unable to create DateFormat. got NULL."); 323585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /* It may not be true that if one is NULL all is NULL. Just to be safe. */ 323685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmtf; 323785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmtl; 323885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmtm; 323985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmts; 324050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 324185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho return; 324285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 324385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho strf = fmtf->format(dt, strf); 324485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho strl = fmtl->format(dt, strl); 324585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho strm = fmtm->format(dt, strm); 324685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho strs = fmts->format(dt, strs); 324785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 324827f654740f2a26ad62a5c155af9199af9e69b889claireho 324985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho/* Locale data is not yet updated 325027f654740f2a26ad62a5c155af9199af9e69b889claireho if (strf.charAt(13) == UChar(0x20)) { 325127f654740f2a26ad62a5c155af9199af9e69b889claireho errln((UnicodeString)"FAIL: Improper formatted date: " + strf); 325285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 325327f654740f2a26ad62a5c155af9199af9e69b889claireho if (strl.charAt(10) == UChar(0x20)) { 325427f654740f2a26ad62a5c155af9199af9e69b889claireho errln((UnicodeString)"FAIL: Improper formatted date: " + strl); 325585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 325685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho*/ 325727f654740f2a26ad62a5c155af9199af9e69b889claireho logln("strm.charAt(10)=%04X wanted 0x20\n", strm.charAt(10)); 325827f654740f2a26ad62a5c155af9199af9e69b889claireho if (strm.charAt(10) != UChar(0x0020)) { 325927f654740f2a26ad62a5c155af9199af9e69b889claireho errln((UnicodeString)"FAIL: Improper formatted date: " + strm ); 326085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 326127f654740f2a26ad62a5c155af9199af9e69b889claireho logln("strs.charAt(10)=%04X wanted 0x20\n", strs.charAt(8)); 326227f654740f2a26ad62a5c155af9199af9e69b889claireho if (strs.charAt(8) != UChar(0x0020)) { 326327f654740f2a26ad62a5c155af9199af9e69b889claireho errln((UnicodeString)"FAIL: Improper formatted date: " + strs); 326485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 326585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 326685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmtf; 326750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete fmtl; 326850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete fmtm; 326985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmts; 327085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 327185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho return; 327285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho} 327385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 327485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho/** 327585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Test DateFormat's parsing of default GMT variants. See ticket#6135 327685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 327785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hovoid DateFormatTest::TestGMTParsing() { 327885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho const char* DATA[] = { 327985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "HH:mm:ss Z", 328085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 328185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // pattern, input, expected output (in quotes) 328285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "HH:mm:ss Z", "10:20:30 GMT+03:00", "10:20:30 +0300", 328385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "HH:mm:ss Z", "10:20:30 UT-02:00", "10:20:30 -0200", 328485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "HH:mm:ss Z", "10:20:30 GMT", "10:20:30 +0000", 328585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "HH:mm:ss vvvv", "10:20:30 UT+10:00", "10:20:30 +1000", 328685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "HH:mm:ss zzzz", "10:20:30 UTC", "10:20:30 +0000", // standalone "UTC" 328785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "ZZZZ HH:mm:ss", "UT 10:20:30", "10:20:30 +0000", 328885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "V HH:mm:ss", "UT+0130 10:20:30", "10:20:30 +0130", 328985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "V HH:mm:ss", "UTC+0130 10:20:30", NULL, // UTC+0130 is not a supported pattern 329085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "HH mm Z ss", "10 20 GMT-1100 30", "10:20:30 -1100", 329185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho }; 329285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho const int32_t DATA_len = sizeof(DATA)/sizeof(DATA[0]); 329385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho expectParse(DATA, DATA_len, Locale("en")); 329485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho} 329585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 329685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho// Test case for localized GMT format parsing 329785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho// with no delimitters in offset format (Chinese locale) 329885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hovoid DateFormatTest::Test6880() { 329985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UErrorCode status = U_ZERO_ERROR; 330085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate d1, d2, dp1, dp2, dexp1, dexp2; 330185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString s1, s2; 330285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 330385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho TimeZone *tz = TimeZone::createTimeZone("Asia/Shanghai"); 330485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho GregorianCalendar gcal(*tz, status); 330550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (failure(status, "construct GregorianCalendar", TRUE)) return; 330650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 330785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho gcal.clear(); 330885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho gcal.set(1910, UCAL_JULY, 1, 12, 00); // offset 8:05:52 330985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho d1 = gcal.getTime(status); 331085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 331185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho gcal.clear(); 331285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho gcal.set(1950, UCAL_JULY, 1, 12, 00); // offset 8:00 331385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho d2 = gcal.getTime(status); 331485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 331585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho gcal.clear(); 331685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho gcal.set(1970, UCAL_JANUARY, 1, 12, 00); 331785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dexp2 = gcal.getTime(status); 331885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dexp1 = dexp2 - (5*60 + 52)*1000; // subtract 5m52s 331985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 332085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (U_FAILURE(status)) { 332185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln("FAIL: Gregorian calendar error"); 332285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 332385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 332485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat *fmt = DateFormat::createTimeInstance(DateFormat::kFull, Locale("zh")); 332585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (fmt == NULL) { 332685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("Unable to create DateFormat. Got NULL."); 332785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho return; 332885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 332985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fmt->adoptTimeZone(tz); 333085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 333185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fmt->format(d1, s1); 333285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fmt->format(d2, s2); 333385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 333485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dp1 = fmt->parse(s1, status); 333585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dp2 = fmt->parse(s2, status); 333685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 333785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (U_FAILURE(status)) { 333885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln("FAIL: Parse failure"); 333985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 334085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 334185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (dp1 != dexp1) { 334285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln("FAIL: Failed to parse " + s1 + " parsed: " + dp1 + " expected: " + dexp1); 334385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 334485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (dp2 != dexp2) { 334585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln("FAIL: Failed to parse " + s2 + " parsed: " + dp2 + " expected: " + dexp2); 334685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 334785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 334885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmt; 334985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho} 3350b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 335127f654740f2a26ad62a5c155af9199af9e69b889clairehovoid DateFormatTest::TestISOEra() { 335227f654740f2a26ad62a5c155af9199af9e69b889claireho 335327f654740f2a26ad62a5c155af9199af9e69b889claireho const char* data[] = { 335427f654740f2a26ad62a5c155af9199af9e69b889claireho // input, output 335527f654740f2a26ad62a5c155af9199af9e69b889claireho "BC 4004-10-23T07:00:00Z", "BC 4004-10-23T07:00:00Z", 335627f654740f2a26ad62a5c155af9199af9e69b889claireho "AD 4004-10-23T07:00:00Z", "AD 4004-10-23T07:00:00Z", 335727f654740f2a26ad62a5c155af9199af9e69b889claireho "-4004-10-23T07:00:00Z" , "BC 4005-10-23T07:00:00Z", 335827f654740f2a26ad62a5c155af9199af9e69b889claireho "4004-10-23T07:00:00Z" , "AD 4004-10-23T07:00:00Z", 335927f654740f2a26ad62a5c155af9199af9e69b889claireho }; 336027f654740f2a26ad62a5c155af9199af9e69b889claireho 336127f654740f2a26ad62a5c155af9199af9e69b889claireho int32_t numData = 8; 336227f654740f2a26ad62a5c155af9199af9e69b889claireho 336327f654740f2a26ad62a5c155af9199af9e69b889claireho UErrorCode status = U_ZERO_ERROR; 336427f654740f2a26ad62a5c155af9199af9e69b889claireho 336527f654740f2a26ad62a5c155af9199af9e69b889claireho // create formatter 336627f654740f2a26ad62a5c155af9199af9e69b889claireho SimpleDateFormat *fmt1 = new SimpleDateFormat(UnicodeString("GGG yyyy-MM-dd'T'HH:mm:ss'Z"), status); 336727f654740f2a26ad62a5c155af9199af9e69b889claireho failure(status, "new SimpleDateFormat", TRUE); 336827f654740f2a26ad62a5c155af9199af9e69b889claireho 336927f654740f2a26ad62a5c155af9199af9e69b889claireho for(int i=0; i < numData; i+=2) { 337027f654740f2a26ad62a5c155af9199af9e69b889claireho // create input string 337127f654740f2a26ad62a5c155af9199af9e69b889claireho UnicodeString in = data[i]; 337227f654740f2a26ad62a5c155af9199af9e69b889claireho 337327f654740f2a26ad62a5c155af9199af9e69b889claireho // parse string to date 337427f654740f2a26ad62a5c155af9199af9e69b889claireho UDate dt1 = fmt1->parse(in, status); 337527f654740f2a26ad62a5c155af9199af9e69b889claireho failure(status, "fmt->parse", TRUE); 337627f654740f2a26ad62a5c155af9199af9e69b889claireho 337727f654740f2a26ad62a5c155af9199af9e69b889claireho // format date back to string 337827f654740f2a26ad62a5c155af9199af9e69b889claireho UnicodeString out; 337927f654740f2a26ad62a5c155af9199af9e69b889claireho out = fmt1->format(dt1, out); 338027f654740f2a26ad62a5c155af9199af9e69b889claireho logln(out); 338127f654740f2a26ad62a5c155af9199af9e69b889claireho 338227f654740f2a26ad62a5c155af9199af9e69b889claireho // check that roundtrip worked as expected 338327f654740f2a26ad62a5c155af9199af9e69b889claireho UnicodeString expected = data[i+1]; 338427f654740f2a26ad62a5c155af9199af9e69b889claireho if (out != expected) { 338527f654740f2a26ad62a5c155af9199af9e69b889claireho dataerrln((UnicodeString)"FAIL: " + in + " -> " + out + " expected -> " + expected); 338627f654740f2a26ad62a5c155af9199af9e69b889claireho } 338727f654740f2a26ad62a5c155af9199af9e69b889claireho } 338827f654740f2a26ad62a5c155af9199af9e69b889claireho 338927f654740f2a26ad62a5c155af9199af9e69b889claireho delete fmt1; 339027f654740f2a26ad62a5c155af9199af9e69b889claireho} 339127f654740f2a26ad62a5c155af9199af9e69b889clairehovoid DateFormatTest::TestFormalChineseDate() { 339227f654740f2a26ad62a5c155af9199af9e69b889claireho 339327f654740f2a26ad62a5c155af9199af9e69b889claireho UErrorCode status = U_ZERO_ERROR; 339427f654740f2a26ad62a5c155af9199af9e69b889claireho UnicodeString pattern ("y\\u5e74M\\u6708d\\u65e5", -1, US_INV ); 339527f654740f2a26ad62a5c155af9199af9e69b889claireho pattern = pattern.unescape(); 339627f654740f2a26ad62a5c155af9199af9e69b889claireho UnicodeString override ("y=hanidec;M=hans;d=hans", -1, US_INV ); 339727f654740f2a26ad62a5c155af9199af9e69b889claireho 339827f654740f2a26ad62a5c155af9199af9e69b889claireho // create formatter 339927f654740f2a26ad62a5c155af9199af9e69b889claireho SimpleDateFormat *sdf = new SimpleDateFormat(pattern,override,Locale::getChina(),status); 340027f654740f2a26ad62a5c155af9199af9e69b889claireho failure(status, "new SimpleDateFormat with override", TRUE); 340127f654740f2a26ad62a5c155af9199af9e69b889claireho 340227f654740f2a26ad62a5c155af9199af9e69b889claireho UDate thedate = date(2009-1900, UCAL_JULY, 28); 340327f654740f2a26ad62a5c155af9199af9e69b889claireho FieldPosition pos(0); 340427f654740f2a26ad62a5c155af9199af9e69b889claireho UnicodeString result; 340527f654740f2a26ad62a5c155af9199af9e69b889claireho sdf->format(thedate,result,pos); 340627f654740f2a26ad62a5c155af9199af9e69b889claireho 340727f654740f2a26ad62a5c155af9199af9e69b889claireho UnicodeString expected = "\\u4e8c\\u3007\\u3007\\u4e5d\\u5e74\\u4e03\\u6708\\u4e8c\\u5341\\u516b\\u65e5"; 340827f654740f2a26ad62a5c155af9199af9e69b889claireho expected = expected.unescape(); 340927f654740f2a26ad62a5c155af9199af9e69b889claireho if (result != expected) { 341027f654740f2a26ad62a5c155af9199af9e69b889claireho dataerrln((UnicodeString)"FAIL: -> " + result + " expected -> " + expected); 341127f654740f2a26ad62a5c155af9199af9e69b889claireho } 341227f654740f2a26ad62a5c155af9199af9e69b889claireho 341327f654740f2a26ad62a5c155af9199af9e69b889claireho UDate parsedate = sdf->parse(expected,status); 341427f654740f2a26ad62a5c155af9199af9e69b889claireho if ( parsedate != thedate ) { 341527f654740f2a26ad62a5c155af9199af9e69b889claireho UnicodeString pat1 ("yyyy-MM-dd'T'HH:mm:ss'Z'", -1, US_INV ); 341627f654740f2a26ad62a5c155af9199af9e69b889claireho SimpleDateFormat *usf = new SimpleDateFormat(pat1,Locale::getEnglish(),status); 341727f654740f2a26ad62a5c155af9199af9e69b889claireho UnicodeString parsedres,expres; 341827f654740f2a26ad62a5c155af9199af9e69b889claireho usf->format(parsedate,parsedres,pos); 341927f654740f2a26ad62a5c155af9199af9e69b889claireho usf->format(thedate,expres,pos); 342027f654740f2a26ad62a5c155af9199af9e69b889claireho errln((UnicodeString)"FAIL: parsed -> " + parsedres + " expected -> " + expres); 342127f654740f2a26ad62a5c155af9199af9e69b889claireho delete usf; 342227f654740f2a26ad62a5c155af9199af9e69b889claireho } 342327f654740f2a26ad62a5c155af9199af9e69b889claireho delete sdf; 342427f654740f2a26ad62a5c155af9199af9e69b889claireho} 342527f654740f2a26ad62a5c155af9199af9e69b889claireho 3426b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_FORMATTING */ 3427b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3428b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//eof 3429