1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/******************************************************************** 250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * COPYRIGHT: 3b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Copyright (c) 1997-2011, 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); 84b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho TESTCASE(44,TestNumberAsStringParsing); 85b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho TESTCASE(45,TestStandAloneGMTParse); 86b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 87b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho TESTCASE(46,TestRelativeError); 88b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho TESTCASE(47,TestRelativeOther); 89b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 90b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru default: name = ""; break; 91b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 92b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 93b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 94b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// Test written by Wally Wedel and emailed to me. 95b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestWallyWedel() 96b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 97b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 98b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 99b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Instantiate a TimeZone so we can get the ids. 100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone *tz = new SimpleTimeZone(7,""); 102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Computational variables. 104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t offset, hours, minutes, seconds; 106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Instantiate a SimpleDateFormat set up to produce a full time 108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru zone name. 109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat *sdf = new SimpleDateFormat((UnicodeString)"zzzz", status); 111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A String array for the time zone ids. 113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t ids_length; 115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru StringEnumeration* ids = TimeZone::createEnumeration(); 116b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (ids == NULL) { 117b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho dataerrln("Unable to create TimeZone enumeration."); 118b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (sdf != NULL) { 119b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho delete sdf; 120b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 121b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho return; 122b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ids_length = ids->count(status); 124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * How many ids do we have? 126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("Time Zone IDs size: %d", ids_length); 128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Column headings (sort of) 130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("Ordinal ID offset(h:m) name"); 132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Loop through the tzs. 134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate today = Calendar::getNow(); 136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Calendar *cal = Calendar::createInstance(status); 137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int32_t i = 0; i < ids_length; i++) { 138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // logln(i + " " + ids[i]); 139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UnicodeString* id = ids->snext(status); 140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone *ttz = TimeZone::createTimeZone(*id); 141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // offset = ttz.getRawOffset(); 142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru cal->setTimeZone(*ttz); 143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru cal->setTime(today, status); 144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru offset = cal->get(UCAL_ZONE_OFFSET, status) + cal->get(UCAL_DST_OFFSET, status); 145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // logln(i + " " + ids[i] + " offset " + offset); 146b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* sign = "+"; 147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (offset < 0) { 148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru sign = "-"; 149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru offset = -offset; 150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru hours = offset/3600000; 152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru minutes = (offset%3600000)/60000; 153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru seconds = (offset%60000)/1000; 154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString dstOffset = (UnicodeString)"" + sign + (hours < 10 ? "0" : "") + 155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru (int32_t)hours + ":" + (minutes < 10 ? "0" : "") + (int32_t)minutes; 156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (seconds != 0) { 157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dstOffset = dstOffset + ":" + (seconds < 10 ? "0" : "") + seconds; 158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Instantiate a date so we can display the time zone name. 161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru sdf->setTimeZone(*ttz); 163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Format the output. 165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString fmtOffset; 167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru FieldPosition pos(0); 168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru sdf->format(today,fmtOffset, pos); 169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // UnicodeString fmtOffset = tzS.toString(); 170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString *fmtDstOffset = 0; 171b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (fmtOffset.startsWith("GMT") && fmtOffset.length() != 3) 172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //fmtDstOffset = fmtOffset->substring(3); 174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmtDstOffset = new UnicodeString(); 175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmtOffset.extract(3, fmtOffset.length(), *fmtDstOffset); 176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 178b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Show our result. 179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBool ok = fmtDstOffset == 0 || *fmtDstOffset == dstOffset; 181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (ok) 182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(UnicodeString() + i + " " + *id + " " + dstOffset + 184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru " " + fmtOffset + 185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru (fmtDstOffset != 0 ? " ok" : " ?")); 186b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 187b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else 188b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 189b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln(UnicodeString() + i + " " + *id + " " + dstOffset + 190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru " " + fmtOffset + " *** FAIL ***"); 191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 192b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete ttz; 193b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmtDstOffset; 194b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 195b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete cal; 196b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // delete ids; // TODO: BAD API 197b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete ids; 198b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete sdf; 199b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete tz; 200b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 201b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 202b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 20350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 204b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 205b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test operator== 206b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 207b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 208b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestEquals() 209b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 210b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat* fmtA = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, DateFormat::FULL); 211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat* fmtB = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, DateFormat::FULL); 212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if ( fmtA == NULL || fmtB == NULL){ 213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dataerrln("Error calling DateFormat::createDateTimeInstance"); 214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmtA; 215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmtB; 216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 218b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 219b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(*fmtA == *fmtB)) errln((UnicodeString)"FAIL"); 220b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmtA; 221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmtB; 222b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 223b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone* test = TimeZone::createTimeZone("PDT"); 224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete test; 225b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 22650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 227b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 228b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 230b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the parsing of 2-digit years. 231b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 232b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 233b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestTwoDigitYearDSTParse(void) 234b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 235b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 236b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat* fullFmt = new SimpleDateFormat((UnicodeString)"EEE MMM dd HH:mm:ss.SSS zzz yyyy G", status); 237b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat *fmt = new SimpleDateFormat((UnicodeString)"dd-MMM-yy h:mm:ss 'o''clock' a z", Locale::getEnglish(), status); 238b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //DateFormat* fmt = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, DateFormat::FULL, Locale::ENGLISH); 239b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString* s = new UnicodeString("03-Apr-04 2:20:47 o'clock AM PST", ""); 240b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone* defaultTZ = TimeZone::createDefault(); 241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone* PST = TimeZone::createTimeZone("PST"); 242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t defaultOffset = defaultTZ->getRawOffset(); 243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t PSTOffset = PST->getRawOffset(); 244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t hour = 2 + (defaultOffset - PSTOffset) / (60*60*1000); 245b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // hour is the expected hour of day, in units of seconds 246b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru hour = ((hour < 0) ? hour + 24 : hour) * 60*60; 24750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 248b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString str; 249b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 250b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(U_FAILURE(status)) { 25150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Could not set up test. exitting - %s", u_errorName(status)); 252b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d = fmt->parse(*s, status); 256b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(*s + " P> " + ((DateFormat*)fullFmt)->format(d, str)); 257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t y, m, day, hr, min, sec; 258b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateToFields(d, y, m, day, hr, min, sec); 259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru hour += defaultTZ->inDaylightTime(d, status) ? 1 : 0; 260b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru hr = hr*60*60; 261b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (hr != hour) 262b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Should parse to hour " + hour + " but got " + hr); 263b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 264b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 265b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: " + (int32_t)status); 266b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 267b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete s; 268b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmt; 269b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fullFmt; 270b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete PST; 271b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete defaultTZ; 272b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 27350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 274b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 27550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 276b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruUChar toHexString(int32_t i) { return (UChar)(i + (i < 10 ? 0x30 : (0x41 - 10))); } 277b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 278b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruUnicodeString& 279b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::escape(UnicodeString& s) 280b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 281b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString buf; 282b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int32_t i=0; i<s.length(); ++i) 283b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 284b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UChar c = s[(int32_t)i]; 285b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (c <= (UChar)0x7F) buf += c; 286b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else { 287b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf += (UChar)0x5c; buf += (UChar)0x55; 288b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf += toHexString((c & 0xF000) >> 12); 289b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf += toHexString((c & 0x0F00) >> 8); 290b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf += toHexString((c & 0x00F0) >> 4); 291b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf += toHexString(c & 0x000F); 292b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 293b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 294b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return (s = buf); 295b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 29650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 297b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 298b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 299b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 300b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This MUST be kept in sync with DateFormatSymbols.gPatternChars. 301b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 302b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char* PATTERN_CHARS = "GyMdkHmsSEDFwWahKzYeugAZvcLQqV"; 303b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 304b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 305b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A list of the names of all the fields in DateFormat. 306b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This MUST be kept in sync with DateFormat. 307b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 308b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char* DATEFORMAT_FIELD_NAMES[] = { 309b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ERA_FIELD", 310b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "YEAR_FIELD", 311b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MONTH_FIELD", 312b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "DATE_FIELD", 313b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "HOUR_OF_DAY1_FIELD", 314b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "HOUR_OF_DAY0_FIELD", 315b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MINUTE_FIELD", 316b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "SECOND_FIELD", 317b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MILLISECOND_FIELD", 318b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "DAY_OF_WEEK_FIELD", 319b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "DAY_OF_YEAR_FIELD", 320b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "DAY_OF_WEEK_IN_MONTH_FIELD", 321b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "WEEK_OF_YEAR_FIELD", 322b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "WEEK_OF_MONTH_FIELD", 323b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "AM_PM_FIELD", 324b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "HOUR1_FIELD", 325b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "HOUR0_FIELD", 326b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "TIMEZONE_FIELD", 327b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "YEAR_WOY_FIELD", 328b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "DOW_LOCAL_FIELD", 329b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EXTENDED_YEAR_FIELD", 330b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "JULIAN_DAY_FIELD", 331b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MILLISECONDS_IN_DAY_FIELD", 332b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "TIMEZONE_RFC_FIELD", 333b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "GENERIC_TIMEZONE_FIELD", 334b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "STAND_ALONE_DAY_FIELD", 335b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "STAND_ALONE_MONTH_FIELD", 336b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "QUARTER_FIELD", 337b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "STAND_ALONE_QUARTER_FIELD", 338b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "TIMEZONE_SPECIAL_FIELD" 339b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 340b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 341b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const int32_t DATEFORMAT_FIELD_NAMES_LENGTH = 342b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru sizeof(DATEFORMAT_FIELD_NAMES) / sizeof(DATEFORMAT_FIELD_NAMES[0]); 343b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 344b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 345b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify that returned field position indices are correct. 346b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 347b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestFieldPosition() { 348b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 349b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t i, j, exp; 350b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString buf; 351b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 352b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Verify data 353b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormatSymbols rootSyms(Locale(""), ec); 354b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertSuccess("DateFormatSymbols", ec); 35585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (U_FAILURE(ec)) { 35685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho return; 35785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 358b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 359b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // local pattern chars data is not longer loaded 360b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // from icu locale bundle 361b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals("patternChars", PATTERN_CHARS, rootSyms.getLocalPatternChars(buf)); 362b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals("patternChars", PATTERN_CHARS, DateFormatSymbols::getPatternUChars()); 363b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertTrue("DATEFORMAT_FIELD_NAMES", DATEFORMAT_FIELD_NAMES_LENGTH == UDAT_FIELD_COUNT); 364b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertTrue("Data", UDAT_FIELD_COUNT == uprv_strlen(PATTERN_CHARS)); 365b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 366b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Create test formatters 367b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t COUNT = 4; 368b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat* dateFormats[COUNT]; 369b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateFormats[0] = DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale::getUS()); 370b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateFormats[1] = DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale::getFrance()); 371b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Make the pattern "G y M d..." 372b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf.remove().append(PATTERN_CHARS); 373b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (j=buf.length()-1; j>=0; --j) buf.insert(j, (UChar)32/*' '*/); 374b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateFormats[2] = new SimpleDateFormat(buf, Locale::getUS(), ec); 375b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Make the pattern "GGGG yyyy MMMM dddd..." 376b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (j=buf.length()-1; j>=0; j-=2) { 377b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (i=0; i<3; ++i) { 378b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf.insert(j, buf.charAt(j)); 379b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 380b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 381b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateFormats[3] = new SimpleDateFormat(buf, Locale::getUS(), ec); 382b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(U_FAILURE(ec)){ 383b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln(UnicodeString("Could not create SimpleDateFormat object for locale en_US. Error: " )+ UnicodeString(u_errorName(ec))); 384b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 385b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 386b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate aug13 = 871508052513.0; 387b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 388b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Expected output field values for above DateFormats on aug13 389b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Fields are given in order of DateFormat field number 390b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* EXPECTED[] = { 391b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "", "1997", "August", "13", "", "", "34", "12", "", 39285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "Wednesday", "", "", "", "", "PM", "2", "", "Pacific Daylight Time", "", "", "", "", "", "", "", "", "", "", "","", 393b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 394b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "", "1997", "ao\\u00FBt", "13", "", "14", "34", "12", "", 39585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "mercredi", "", "", "", "", "", "", "", "heure avanc\\u00e9e du Pacifique", "", "", "", "", "", "", "", "", "", "", "", "", 396b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 397b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "AD", "1997", "8", "13", "14", "14", "34", "12", "5", 398b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "Wed", "225", "2", "33", "3", "PM", "2", "2", "PDT", "1997", "4", "1997", "2450674", "52452513", "-0700", "PT", "4", "8", "3", "3","PDT", 399b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 400b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "Anno Domini", "1997", "August", "0013", "0014", "0014", "0034", "0012", "5130", 401b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "Wednesday", "0225", "0002", "0033", "0003", "PM", "0002", "0002", "Pacific Daylight Time", "1997", "Wednesday", "1997", "2450674", "52452513", "GMT-07:00", 402b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "Pacific Time", "Wednesday", "August", "3rd quarter", "3rd quarter", "United States Time (Los Angeles)" 403b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 404b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 405b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t EXPECTED_LENGTH = sizeof(EXPECTED)/sizeof(EXPECTED[0]); 406b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 407b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertTrue("data size", EXPECTED_LENGTH == COUNT * UDAT_FIELD_COUNT); 408b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 409b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone* PT = TimeZone::createTimeZone("America/Los_Angeles"); 410b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (j = 0, exp = 0; j < COUNT; ++j) { 411b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // String str; 412b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat* df = dateFormats[j]; 413b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru df->setTimeZone(*PT); 41427f654740f2a26ad62a5c155af9199af9e69b889claireho SimpleDateFormat* sdtfmt = dynamic_cast<SimpleDateFormat*>(df); 41527f654740f2a26ad62a5c155af9199af9e69b889claireho if (sdtfmt != NULL) { 41627f654740f2a26ad62a5c155af9199af9e69b889claireho logln(" Pattern = " + sdtfmt->toPattern(buf.remove())); 417b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 418b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(" Pattern = ? (not a SimpleDateFormat)"); 419b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 420b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" Result = " + df->format(aug13, buf.remove())); 421b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 42250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t expBase = exp; // save for later 423b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (i = 0; i < UDAT_FIELD_COUNT; ++i, ++exp) { 424b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru FieldPosition pos(i); 425b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf.remove(); 42650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho df->format(aug13, buf, pos); 427b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString field; 428b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru buf.extractBetween(pos.getBeginIndex(), pos.getEndIndex(), field); 429b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"field #" + i + " " + DATEFORMAT_FIELD_NAMES[i], 430b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ctou(EXPECTED[exp]), field); 431b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 43250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 43350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // test FieldPositionIterator API 43450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho logln("FieldPositionIterator"); 43550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho { 43650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode status = U_ZERO_ERROR; 43750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho FieldPositionIterator posIter; 43850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho FieldPosition fp; 43950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 44050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho buf.remove(); 44150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho df->format(aug13, buf, &posIter, status); 44250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho while (posIter.next(fp)) { 44350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t i = fp.getField(); 44450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString field; 44550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho buf.extractBetween(fp.getBeginIndex(), fp.getEndIndex(), field); 44650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho assertEquals((UnicodeString)"field #" + i + " " + DATEFORMAT_FIELD_NAMES[i], 44750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ctou(EXPECTED[expBase + i]), field); 44850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 44950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 45050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 451b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 452b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 45350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 45450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // test null posIter 45550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho buf.remove(); 45650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode status = U_ZERO_ERROR; 45750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dateFormats[0]->format(aug13, buf, NULL, status); 45850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // if we didn't crash, we succeeded. 45950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 460b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (i=0; i<COUNT; ++i) { 461b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dateFormats[i]; 462b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 463b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete PT; 464b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 465b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 466b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 467b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 468b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 469b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * General parse/format tests. Add test cases as needed. 470b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 471b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestGeneral() { 472b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* DATA[] = { 473b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss.SSS", 474b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 475b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Milliseconds are left-justified, since they format as fractions of a second 47627f654740f2a26ad62a5c155af9199af9e69b889claireho "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", 47727f654740f2a26ad62a5c155af9199af9e69b889claireho "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", 478b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm:ss.SSS", "F", "2004 03 10 16:36:31.567", "2004/3/10 16:36:31.567", 479b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 480b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 481b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(DATA, ARRAY_SIZE(DATA), Locale("en", "", "")); 482b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 48350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 484b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 485b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 486b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 487b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify that strings which contain incomplete specifications are parsed 488b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * correctly. In some instances, this means not being parsed at all, and 489b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * returning an appropriate error. 490b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 491b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 492b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestPartialParse994() 493b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 494b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 495b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat* f = new SimpleDateFormat(status); 49685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (U_FAILURE(status)) { 49750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail new SimpleDateFormat: %s", u_errorName(status)); 49885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete f; 49985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho return; 50085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 501b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate null = 0; 502b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 10:11:42", date(97, 1 - 1, 17, 10, 11, 42)); 503b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 10:", null); 504b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 10", null); 505b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17 ", null); 506b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPat994(f, "yy/MM/dd HH:mm:ss", "97/01/17", null); 507b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 508b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete f; 509b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 51050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 511b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 51250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 513b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 514b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::tryPat994(SimpleDateFormat* format, const char* pat, const char* str, UDate expected) 515b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 516b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 517b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate null = 0; 518b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(UnicodeString("Pattern \"") + pat + "\" String \"" + str + "\""); 519b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 520b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru format->applyPattern(pat); 521b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date = format->parse(str, status); 522b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status) || date == null) 523b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 524b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"ParseException: " + (int32_t)status); 525b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (expected != null) errln((UnicodeString)"FAIL: Expected " + dateToString(expected)); 526b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 527b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else 528b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 529b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString f; 530b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ((DateFormat*)format)->format(date, f); 531b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(UnicodeString(" parse(") + str + ") -> " + dateToString(date)); 532b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" format -> " + f); 533b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (expected == null || 534b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru !(date == expected)) errln((UnicodeString)"FAIL: Expected null");//" + expected); 535b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(f == str)) errln(UnicodeString("FAIL: Expected ") + str); 536b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 537b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 538b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(ParseException e) { 539b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // logln((UnicodeString)"ParseException: " + e.getMessage()); 540b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // if (expected != null) errln((UnicodeString)"FAIL: Expected " + dateToString(expected)); 541b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 542b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(Exception e) { 543b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // errln((UnicodeString)"*** Exception:"); 544b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // e.printStackTrace(); 545b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 546b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 54750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 548b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 54950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 550b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 551b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify the behavior of patterns in which digits for different fields run together 552b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * without intervening separators. 553b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 554b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 555b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestRunTogetherPattern985() 556b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 557b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 558b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString format("yyyyMMddHHmmssSSS"); 559b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString now, then; 560b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //UBool flag; 561b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat *formatter = new SimpleDateFormat(format, status); 56250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(status)) { 56350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail new SimpleDateFormat: %s", u_errorName(status)); 56450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete formatter; 56550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 56650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 567b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date1 = Calendar::getNow(); 568b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ((DateFormat*)formatter)->format(date1, now); 569b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(now); 570b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition pos(0); 571b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date2 = formatter->parse(now, pos); 572b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (date2 == 0) then = "Parse stopped at " + pos.getIndex(); 573b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else ((DateFormat*)formatter)->format(date2, then); 574b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(then); 575b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(date2 == date1)) errln((UnicodeString)"FAIL"); 576b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete formatter; 577b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 578b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 57950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 580b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 58150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 582b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 583b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify the behavior of patterns in which digits for different fields run together 584b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * without intervening separators. 585b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 586b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 587b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestRunTogetherPattern917() 588b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 589b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 590b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat* fmt; 591b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString myDate; 592b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt = new SimpleDateFormat((UnicodeString)"yyyy/MM/dd", status); 59350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(status)) { 59450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail new SimpleDateFormat: %s", u_errorName(status)); 59550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete fmt; 59650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 59750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 598b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru myDate = "1997/02/03"; 599b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru testIt917(fmt, myDate, date(97, 2 - 1, 3)); 600b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmt; 601b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt = new SimpleDateFormat((UnicodeString)"yyyyMMdd", status); 602b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru myDate = "19970304"; 603b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru testIt917(fmt, myDate, date(97, 3 - 1, 4)); 604b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmt; 605b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 606b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 60750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 608b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 60950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 610b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 611b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::testIt917(SimpleDateFormat* fmt, UnicodeString& str, UDate expected) 612b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 613b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 614b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString pattern; 615b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"pattern=" + fmt->toPattern(pattern) + " string=" + str); 616b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Formattable o; 617b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 618b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ((Format*)fmt)->parseObject(str, o, status); 619b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 620b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) return; 621b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(ParseException e) { 622b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // e.printStackTrace(); 623b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // return; 624b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 625b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Parsed object: " + dateToString(o.getDate())); 626b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(o.getDate() == expected)) errln((UnicodeString)"FAIL: Expected " + dateToString(expected)); 627b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString formatted; ((Format*)fmt)->format(o, formatted, status); 628b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Formatted string: " + formatted); 629b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(formatted == str)) errln((UnicodeString)"FAIL: Expected " + str); 630b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 631b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 63250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 633b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 63450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 635b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 636b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify the handling of Czech June and July, which have the unique attribute that 637b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * one is a proper prefix substring of the other. 638b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 639b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 640b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestCzechMonths459() 641b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 642b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 643b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat* fmt = DateFormat::createDateInstance(DateFormat::FULL, Locale("cs", "", "")); 644b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fmt == NULL){ 645b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dataerrln("Error calling DateFormat::createDateInstance()"); 646b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 647b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 648b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 649b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString pattern; 650b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Pattern " + ((SimpleDateFormat*) fmt)->toPattern(pattern)); 651b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate june = date(97, UCAL_JUNE, 15); 652b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate july = date(97, UCAL_JULY, 15); 653b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString juneStr; fmt->format(june, juneStr); 654b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString julyStr; fmt->format(july, julyStr); 655b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 656b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"format(June 15 1997) = " + juneStr); 657b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d = fmt->parse(juneStr, status); 658b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString s; fmt->format(d, s); 659b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t month,yr,day,hr,min,sec; dateToFields(d,yr,month,day,hr,min,sec); 660b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" -> parse -> " + s + " (month = " + month + ")"); 661b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (month != UCAL_JUNE) errln((UnicodeString)"FAIL: Month should be June"); 662b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"format(July 15 1997) = " + julyStr); 663b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru d = fmt->parse(julyStr, status); 664b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt->format(d, s); 665b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateToFields(d,yr,month,day,hr,min,sec); 666b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" -> parse -> " + s + " (month = " + month + ")"); 667b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (month != UCAL_JULY) errln((UnicodeString)"FAIL: Month should be July"); 668b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 669b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(ParseException e) { 670b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 671b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"Exception: " + (int32_t)status); 672b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 673b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fmt; 674b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 67550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 676b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 677b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 678b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 679b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the handling of 'D' in patterns. 680b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 681b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 682b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestLetterDPattern212() 683b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 684b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 685b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString dateString("1995-040.05:01:29"); 686b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString bigD("yyyy-DDD.hh:mm:ss"); 687b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString littleD("yyyy-ddd.hh:mm:ss"); 688b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate expLittleD = date(95, 0, 1, 5, 1, 29); 689b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate expBigD = expLittleD + 39 * 24 * 3600000.0; 690b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expLittleD = expBigD; // Expect the same, with default lenient parsing 691b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"dateString= " + dateString); 692b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat *formatter = new SimpleDateFormat(bigD, status); 69350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(status)) { 69450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail new SimpleDateFormat: %s", u_errorName(status)); 69550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete formatter; 69650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 69750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 698b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition pos(0); 699b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate myDate = formatter->parse(dateString, pos); 700b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Using " + bigD + " -> " + myDate); 701b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (myDate != expBigD) errln((UnicodeString)"FAIL: bigD - Expected " + dateToString(expBigD)); 702b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete formatter; 703b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru formatter = new SimpleDateFormat(littleD, status); 70450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho ASSERT_OK(status); 705b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru pos = ParsePosition(0); 706b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru myDate = formatter->parse(dateString, pos); 707b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Using " + littleD + " -> " + dateToString(myDate)); 708b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (myDate != expLittleD) errln((UnicodeString)"FAIL: littleD - Expected " + dateToString(expLittleD)); 709b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete formatter; 710b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 711b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 71250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 713b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 714b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 715b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 716b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the day of year pattern. 717b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 718b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 719b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestDayOfYearPattern195() 720b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 721b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 722b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate today = Calendar::getNow(); 723b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t year,month,day,hour,min,sec; dateToFields(today,year,month,day,hour,min,sec); 724b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate expected = date(year, month, day); 725b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Test Date: " + dateToString(today)); 726b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat* sdf = (SimpleDateFormat*)DateFormat::createDateInstance(); 727b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (sdf == NULL){ 728b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dataerrln("Error calling DateFormat::createDateInstance()"); 729b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 730b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 731b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPattern(*sdf, today, 0, expected); 732b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru tryPattern(*sdf, today, "G yyyy DDD", expected); 733b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete sdf; 734b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 735b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 73650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 737b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 73850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 739b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 740b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::tryPattern(SimpleDateFormat& sdf, UDate d, const char* pattern, UDate expected) 741b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 742b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 743b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (pattern != 0) sdf.applyPattern(pattern); 744b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString thePat; 745b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"pattern: " + sdf.toPattern(thePat)); 746b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString formatResult; (*(DateFormat*)&sdf).format(d, formatResult); 747b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" format -> " + formatResult); 748b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // try { 749b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d2 = sdf.parse(formatResult, status); 750b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" parse(" + formatResult + ") -> " + dateToString(d2)); 751b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (d2 != expected) errln((UnicodeString)"FAIL: Expected " + dateToString(expected)); 752b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString format2; (*(DateFormat*)&sdf).format(d2, format2); 753b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)" format -> " + format2); 754b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(formatResult == format2)) errln((UnicodeString)"FAIL: Round trip drift"); 755b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 756b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(Exception e) { 757b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 758b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"Error: " + (int32_t)status); 759b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 760b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 76150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 762b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 763b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 764b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 765b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the handling of single quotes in patterns. 766b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 767b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 768b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestQuotePattern161() 769b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 770b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 771b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat* formatter = new SimpleDateFormat((UnicodeString)"MM/dd/yyyy 'at' hh:mm:ss a zzz", status); 77250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(status)) { 77350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail new SimpleDateFormat: %s", u_errorName(status)); 77450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete formatter; 77550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 77650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 777b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate currentTime_1 = date(97, UCAL_AUGUST, 13, 10, 42, 28); 778b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString dateString; ((DateFormat*)formatter)->format(currentTime_1, dateString); 779b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString exp("08/13/1997 at 10:42:28 AM "); 780b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"format(" + dateToString(currentTime_1) + ") = " + dateString); 781b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (0 != dateString.compareBetween(0, exp.length(), exp, 0, exp.length())) errln((UnicodeString)"FAIL: Expected " + exp); 782b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete formatter; 783b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 784b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 78550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 786b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 787b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 788b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 789b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify the correct behavior when handling invalid input strings. 790b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 791b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 792b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestBadInput135() 793b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 794b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 795b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat::EStyle looks[] = { 796b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat::SHORT, DateFormat::MEDIUM, DateFormat::LONG, DateFormat::FULL 797b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 798b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t looks_length = (int32_t)(sizeof(looks) / sizeof(looks[0])); 799b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* strings[] = { 800b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "Mar 15", "Mar 15 1997", "asdf", "3/1/97 1:23:", "3/1/00 1:23:45 AM" 801b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 802b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t strings_length = (int32_t)(sizeof(strings) / sizeof(strings[0])); 803b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *full = DateFormat::createDateTimeInstance(DateFormat::LONG, DateFormat::LONG); 804b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(full==NULL) { 80585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("could not create date time instance"); 806b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 807b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 808b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString expected("March 1, 2000 1:23:45 AM "); 809b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int32_t i = 0; i < strings_length;++i) { 810b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* text = strings[i]; 811b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int32_t j = 0; j < looks_length;++j) { 812b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat::EStyle dateLook = looks[j]; 813b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int32_t k = 0; k < looks_length;++k) { 814b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat::EStyle timeLook = looks[k]; 815b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *df = DateFormat::createDateTimeInstance(dateLook, timeLook); 816b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (df == NULL){ 817b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dataerrln("Error calling DateFormat::createDateTimeInstance()"); 818b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru continue; 819b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 820b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString prefix = UnicodeString(text) + ", " + dateLook + "/" + timeLook + ": "; 821b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 822b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate when = df->parse(text, status); 823b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (when == 0 && U_SUCCESS(status)) { 824b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln(prefix + "SHOULD NOT HAPPEN: parse returned 0."); 825b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru continue; 826b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 827b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_SUCCESS(status)) 828b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { 829b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString format; 830b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UnicodeString pattern; 831b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho SimpleDateFormat* sdtfmt = dynamic_cast<SimpleDateFormat*>(df); 832b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (sdtfmt != NULL) { 833b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho sdtfmt->toPattern(pattern); 834b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 835b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full->format(when, format); 836b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(prefix + "OK: " + format); 837b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (0!=format.compareBetween(0, expected.length(), expected, 0, expected.length())) 838b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho errln((UnicodeString)"FAIL: Parse \"" + text + "\", pattern \"" + pattern + "\", expected " + expected + " got " + format); 839b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 840b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 841b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(ParseException e) { 842b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else 843b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 844b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 845b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(StringIndexOutOfBoundsException e) { 846b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // errln(prefix + "SHOULD NOT HAPPEN: " + (int)status); 847b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 848b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete df; 849b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 850b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 851b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 852b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete full; 853b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 854b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 855b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 85650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 857b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char* const parseFormats[] = { 858b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM d, yyyy", 859b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM d yyyy", 860b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "M/d/yy", 861b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "d MMMM, yyyy", 862b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "d MMMM yyyy", 863b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "d MMMM", 864b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM d", 865b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy", 866b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "h:mm a MMMM d, yyyy" 867b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 86850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 869b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho#if 0 870b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho// strict inputStrings 871b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustatic const char* const inputStrings[] = { 872b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "bogus string", 0, 0, 0, 0, 0, 0, 0, 0, 0, 873b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "April 1, 1997", "April 1, 1997", 0, 0, 0, 0, 0, "April 1", 0, 0, 874b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "Jan 1, 1970", "January 1, 1970", 0, 0, 0, 0, 0, "January 1", 0, 0, 875b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "Jan 1 2037", 0, "January 1 2037", 0, 0, 0, 0, "January 1", 0, 0, 876b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "1/1/70", 0, 0, "1/1/70", 0, 0, 0, 0, "0001", 0, 877b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "5 May 1997", 0, 0, 0, 0, "5 May 1997", "5 May", 0, "0005", 0, 878b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "16 May", 0, 0, 0, 0, 0, "16 May", 0, "0016", 0, 879b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "April 30", 0, 0, 0, 0, 0, 0, "April 30", 0, 0, 880b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "1998", 0, 0, 0, 0, 0, 0, 0, "1998", 0, 881b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "1", 0, 0, 0, 0, 0, 0, 0, "0001", 0, 882b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "3:00 pm Jan 1, 1997", 0, 0, 0, 0, 0, 0, 0, "0003", "3:00 PM January 1, 1997", 883b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 884b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho#else 885b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho// lenient inputStrings 886b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2clairehostatic const char* const inputStrings[] = { 887b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "bogus string", 0, 0, 0, 0, 0, 0, 0, 0, 0, 888b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "April 1, 1997", "April 1, 1997", "April 1 1997", "4/1/97", 0, 0, 0, "April 1", 0, 0, 889b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "Jan 1, 1970", "January 1, 1970", "January 1 1970", "1/1/70", 0, 0, 0, "January 1", 0, 0, 890b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "Jan 1 2037", "January 1, 2037", "January 1 2037", "1/1/37", 0, 0, 0, "January 1", 0, 0, 891b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "1/1/70", "January 1, 1970", "January 1 1970", "1/1/70", "1 January, 1970", "1 January 1970", "1 January", "January 1", "0001", 0, 892b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "5 May 1997", 0, 0, 0, "5 May, 1997", "5 May 1997", "5 May", 0, "0005", 0, 893b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "16 May", 0, 0, 0, 0, 0, "16 May", 0, "2016", 0, 894b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "April 30", 0, 0, 0, 0, 0, 0, "April 30", 0, 0, 895b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "1998", 0, 0, 0, 0, 0, 0, 0, "1998", 0, 896b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "1", 0, 0, 0, 0, 0, 0, 0, "0001", 0, 897b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "3:00 pm Jan 1, 1997", 0, 0, 0, 0, 0, 0, 0, "0003", "3:00 PM January 1, 1997", 898b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho}; 899b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho#endif 900b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 901b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 902b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 903b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 904b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Verify the correct behavior when parsing an array of inputs against an 905b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * array of patterns, with known results. The results are encoded after 906b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the input strings in each row. 907b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 908b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 909b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestBadInput135a() 910b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 911b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 912b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat* dateParse = new SimpleDateFormat(status); 913b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(U_FAILURE(status)) { 91450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Failed creating SimpleDateFormat with %s. Quitting test", u_errorName(status)); 915b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dateParse; 916b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 917b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 918b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* s; 919b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date; 920b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const uint32_t PF_LENGTH = (int32_t)(sizeof(parseFormats)/sizeof(parseFormats[0])); 921b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const uint32_t INPUT_LENGTH = (int32_t)(sizeof(inputStrings)/sizeof(inputStrings[0])); 922b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 923b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateParse->applyPattern("d MMMM, yyyy"); 924b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateParse->adoptTimeZone(TimeZone::createDefault()); 925b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru s = "not parseable"; 926b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString thePat; 927b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(UnicodeString("Trying to parse \"") + s + "\" with " + dateParse->toPattern(thePat)); 928b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 929b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru date = dateParse->parse(s, status); 930b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_SUCCESS(status)) 931b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Expected exception during parse"); 932b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 933b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(Exception ex) { 934b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else 935b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Exception during parse: " + (int32_t)status); 936b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru status = U_ZERO_ERROR; 937b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 938b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (uint32_t i = 0; i < INPUT_LENGTH; i += (PF_LENGTH + 1)) { 939b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition parsePosition(0); 940b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString s( inputStrings[i]); 941b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (uint32_t index = 0; index < PF_LENGTH;++index) { 942b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* expected = inputStrings[i + 1 + index]; 943b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateParse->applyPattern(parseFormats[index]); 944b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateParse->adoptTimeZone(TimeZone::createDefault()); 945b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 946b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru parsePosition.setIndex(0); 947b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru date = dateParse->parse(s, parsePosition); 948b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (parsePosition.getIndex() != 0) { 949b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString s1, s2; 950b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru s.extract(0, parsePosition.getIndex(), s1); 951b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru s.extract(parsePosition.getIndex(), s.length(), s2); 952b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (date == 0) { 953b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"ERROR: null result fmt=\"" + 954b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru parseFormats[index] + 955b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "\" pos=" + parsePosition.getIndex() + " " + 956b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru s1 + "|" + s2); 957b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 958b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else { 959b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result; 960b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ((DateFormat*)dateParse)->format(date, result); 961b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Parsed \"" + s + "\" using \"" + dateParse->toPattern(thePat) + "\" to: " + result); 962b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (expected == 0) 963b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho errln((UnicodeString)"FAIL: Expected parse failure, got " + result); 964b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else if (!(result == expected)) 965b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho errln(UnicodeString("FAIL: Parse \"") + s + UnicodeString("\", expected ") + expected + UnicodeString(", got ") + result); 966b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 967b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 968b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else if (expected != 0) { 969b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln(UnicodeString("FAIL: Expected ") + expected + " from \"" + 970b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru s + "\" with \"" + dateParse->toPattern(thePat) + "\""); 971b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 972b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 973b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(Exception ex) { 974b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 975b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"An exception was thrown during parse: " + (int32_t)status); 976b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 977b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 978b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 979b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dateParse; 980b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 981b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: UErrorCode received during test: " + (int32_t)status); 982b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 98350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 984b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 985b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 986b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 987b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the parsing of two-digit years. 988b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 989b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 990b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestTwoDigitYear() 991b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 992b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 993b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat fmt("dd/MM/yy", Locale::getUK(), ec); 994b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(ec)) { 99550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("FAIL: SimpleDateFormat constructor - %s", u_errorName(ec)); 996b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 997b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 998b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru parse2DigitYear(fmt, "5/6/17", date(117, UCAL_JUNE, 5)); 999b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru parse2DigitYear(fmt, "4/6/34", date(34, UCAL_JUNE, 4)); 1000b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 100150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1002b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 100350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1004b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 1005b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::parse2DigitYear(DateFormat& fmt, const char* str, UDate expected) 1006b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1007b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 1008b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 1009b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d = fmt.parse(str, status); 1010b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString thePat; 1011b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(UnicodeString("Parsing \"") + str + "\" with " + ((SimpleDateFormat*)&fmt)->toPattern(thePat) + 1012b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru " => " + dateToString(d)); 1013b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (d != expected) errln((UnicodeString)"FAIL: Expected " + expected); 1014b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 1015b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(ParseException e) { 1016b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 1017b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Got exception"); 1018b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 1019b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 102050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1021b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 1022b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1023b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1024b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the formatting of time zones. 1025b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1026b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 1027b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestDateFormatZone061() 1028b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1029b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 1030b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date; 1031b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *formatter; 1032b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru date= 859248000000.0; 1033b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Date 1997/3/25 00:00 GMT: " + date); 1034b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru formatter = new SimpleDateFormat((UnicodeString)"dd-MMM-yyyyy HH:mm", Locale::getUK(), status); 1035b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(U_FAILURE(status)) { 103650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Failed creating SimpleDateFormat with %s. Quitting test", u_errorName(status)); 1037b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete formatter; 1038b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1039b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1040b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru formatter->adoptTimeZone(TimeZone::createTimeZone("GMT")); 1041b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString temp; formatter->format(date, temp); 1042b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Formatted in GMT to: " + temp); 1043b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 1044b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate tempDate = formatter->parse(temp, status); 1045b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Parsed to: " + dateToString(tempDate)); 1046b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (tempDate != date) errln((UnicodeString)"FAIL: Expected " + dateToString(date)); 1047b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 1048b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //catch(Throwable t) { 1049b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(status)) 1050b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"Date Formatter throws: " + (int32_t)status); 1051b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 1052b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete formatter; 1053b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 105450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1055b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 105650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1057b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1058b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the formatting of time zones. 1059b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1060b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 1061b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestDateFormatZone146() 1062b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1063b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone *saveDefault = TimeZone::createDefault(); 1064b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1065b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //try { 1066b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone *thedefault = TimeZone::createTimeZone("GMT"); 1067b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone::setDefault(*thedefault); 1068b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // java.util.Locale.setDefault(new java.util.Locale("ar", "", "")); 1069b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1070b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // check to be sure... its GMT all right 1071b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone *testdefault = TimeZone::createDefault(); 1072b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString testtimezone; 1073b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru testdefault->getID(testtimezone); 1074b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (testtimezone == "GMT") 1075b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("Test timezone = " + testtimezone); 1076b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else 1077b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho dataerrln("Test timezone should be GMT, not " + testtimezone); 1078b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1079b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 1080b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // now try to use the default GMT time zone 1081b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru GregorianCalendar *greenwichcalendar = 1082b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru new GregorianCalendar(1997, 3, 4, 23, 0, status); 108350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(status)) { 108450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail new GregorianCalendar: %s", u_errorName(status)); 108550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } else { 108650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho //*****************************greenwichcalendar.setTimeZone(TimeZone.getDefault()); 108750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho //greenwichcalendar.set(1997, 3, 4, 23, 0); 108850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // try anything to set hour to 23:00 !!! 108950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho greenwichcalendar->set(UCAL_HOUR_OF_DAY, 23); 109050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // get time 109150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UDate greenwichdate = greenwichcalendar->getTime(status); 109250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // format every way 109350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString DATA [] = { 1094b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UnicodeString("simple format: "), UnicodeString("04/04/97 23:00 GMT"), 109550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString("MM/dd/yy HH:mm z"), 1096b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UnicodeString("full format: "), UnicodeString("Friday, April 4, 1997 11:00:00 o'clock PM GMT"), 109750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString("EEEE, MMMM d, yyyy h:mm:ss 'o''clock' a z"), 1098b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UnicodeString("long format: "), UnicodeString("April 4, 1997 11:00:00 PM GMT"), 109950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString("MMMM d, yyyy h:mm:ss a z"), 110050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString("default format: "), UnicodeString("04-Apr-97 11:00:00 PM"), 110150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString("dd-MMM-yy h:mm:ss a"), 110250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString("short format: "), UnicodeString("4/4/97 11:00 PM"), 110350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString("M/d/yy h:mm a") 110450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho }; 110550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t DATA_length = (int32_t)(sizeof(DATA) / sizeof(DATA[0])); 110650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 110750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho for (int32_t i=0; i<DATA_length; i+=3) { 110850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho DateFormat *fmt = new SimpleDateFormat(DATA[i+2], Locale::getEnglish(), status); 110950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if(failure(status, "new SimpleDateFormat")) break; 111050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho fmt->setCalendar(*greenwichcalendar); 111150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString result; 111250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho result = fmt->format(greenwichdate, result); 111350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho logln(DATA[i] + result); 111450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (result != DATA[i+1]) 111550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln("FAIL: Expected " + DATA[i+1] + ", got " + result); 111650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete fmt; 111750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 1118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 1120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //finally { 1121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TimeZone::adoptDefault(saveDefault); 1122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //} 1123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete testdefault; 1124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete greenwichcalendar; 1125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete thedefault; 1126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 112950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// ------------------------------------- 113150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test the formatting of dates in different locales. 1134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid 1136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruDateFormatTest::TestLocaleDateFormat() // Bug 495 1137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate testDate = date(97, UCAL_SEPTEMBER, 15); 113950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho DateFormat *dfFrench = DateFormat::createDateTimeInstance(DateFormat::FULL, 1140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat::FULL, Locale::getFrench()); 114150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho DateFormat *dfUS = DateFormat::createDateTimeInstance(DateFormat::FULL, 1142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat::FULL, Locale::getUS()); 114385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString expectedFRENCH ( "lundi 15 septembre 1997 00:00:00 heure avanc\\u00E9e du Pacifique", -1, US_INV ); 1144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectedFRENCH = expectedFRENCH.unescape(); 1145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //UnicodeString expectedUS ( "Monday, September 15, 1997 12:00:00 o'clock AM PDT" ); 114685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString expectedUS ( "Monday, September 15, 1997 12:00:00 AM Pacific Daylight Time" ); 1147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Date set to : " + dateToString(testDate)); 114850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString out; 1149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (dfUS == NULL || dfFrench == NULL){ 1150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dataerrln("Error calling DateFormat::createDateTimeInstance)"); 1151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dfUS; 1152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dfFrench; 1153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dfFrench->format(testDate, out); 1157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Date Formated with French Locale " + out); 1158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(out == expectedFRENCH)) 1159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Expected " + expectedFRENCH); 1160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru out.truncate(0); 1161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dfUS->format(testDate, out); 1162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Date Formated with US Locale " + out); 1163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!(out == expectedUS)) 1164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Expected " + expectedUS); 1165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dfUS; 1166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete dfFrench; 1167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test DateFormat(Calendar) API 1171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestDateFormatCalendar() { 1173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *date=0, *time=0, *full=0; 1174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Calendar *cal=0; 1175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString str; 1176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition pos; 1177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate when; 1178b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 1179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Create a formatter for date fields. */ 1181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru date = DateFormat::createDateInstance(DateFormat::kShort, Locale::getUS()); 1182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (date == NULL) { 118385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("FAIL: createDateInstance failed"); 1184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1186b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1187b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Create a formatter for time fields. */ 1188b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru time = DateFormat::createTimeInstance(DateFormat::kShort, Locale::getUS()); 1189b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (time == NULL) { 1190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: createTimeInstance failed"); 1191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1192b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1193b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1194b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Create a full format for output */ 1195b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full = DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, 1196b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale::getUS()); 1197b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (full == NULL) { 1198b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: createInstance failed"); 1199b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1200b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1201b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1202b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Create a calendar */ 1203b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru cal = Calendar::createInstance(Locale::getUS(), ec); 1204b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (cal == NULL || U_FAILURE(ec)) { 120550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln((UnicodeString)"FAIL: Calendar::createInstance failed with " + 1206b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru u_errorName(ec)); 1207b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1208b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1209b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1210b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Parse the date */ 1211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru cal->clear(); 1212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru str = UnicodeString("4/5/2001", ""); 1213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru pos.setIndex(0); 1214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru date->parse(str, *cal, pos); 1215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (pos.getIndex() != str.length()) { 1216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: DateFormat::parse(4/5/2001) failed at " + 1217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru pos.getIndex()); 1218b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1219b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1220b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Parse the time */ 1222b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru str = UnicodeString("5:45 PM", ""); 1223b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru pos.setIndex(0); 1224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru time->parse(str, *cal, pos); 1225b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (pos.getIndex() != str.length()) { 1226b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: DateFormat::parse(17:45) failed at " + 1227b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru pos.getIndex()); 1228b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 123050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1231b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* Check result */ 1232b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru when = cal->getTime(ec); 1233b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(ec)) { 1234b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: cal->getTime() failed with " + u_errorName(ec)); 1235b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru goto FAIL; 1236b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1237b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru str.truncate(0); 1238b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full->format(when, str); 1239b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Thursday, April 5, 2001 5:45:00 PM PDT 986517900000 1240b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (when == 986517900000.0) { 1241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("Ok: Parsed result: " + str); 1242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 1243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: Parsed result: " + str + ", exp 4/5/2001 5:45 PM"); 1244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1245b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 124650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho FAIL: 1247b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete date; 1248b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete time; 1249b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete full; 1250b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete cal; 1251b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1252b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test DateFormat's parsing of space characters. See jitterbug 1916. 1255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1256b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestSpaceParsing() { 1257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* DATA[] = { 1258b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1260b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // pattern, input, expected parse or NULL if expect parse failure 1261b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMM d yy", " 04 05 06", "2006 04 05 00:00:00", 1262b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "04 05 06", "2006 04 05 00:00:00", 1263b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1264b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MM d yy", " 04 05 06", "2006 04 05 00:00:00", 1265b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "04 05 06", "2006 04 05 00:00:00", 1266b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "04/05/06", "2006 04 05 00:00:00", 1267b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "04-05-06", "2006 04 05 00:00:00", 1268b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "04.05.06", "2006 04 05 00:00:00", 1269b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "04 / 05 / 06", "2006 04 05 00:00:00", 1270b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "Apr / 05/ 06", "2006 04 05 00:00:00", 1271b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "Apr-05-06", "2006 04 05 00:00:00", 1272b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "Apr 05, 2006", "2006 04 05 00:00:00", 1273b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1274b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM d yy", " Apr 05 06", "2006 04 05 00:00:00", 1275b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "Apr 05 06", "2006 04 05 00:00:00", 1276b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "Apr05 06", "2006 04 05 00:00:00", 1277b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1278b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "hh:mm:ss a", "12:34:56 PM", "1970 01 01 12:34:56", 1279b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "12:34:56PM", "1970 01 01 12:34:56", 1280b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "12.34.56PM", "1970 01 01 12:34:56", 1281b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "12-34-56 PM", "1970 01 01 12:34:56", 1282b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "12 : 34 : 56 PM", "1970 01 01 12:34:56", 1283b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1284b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MM d yy 'at' hh:mm:ss a", "04/05/06 12:34:56 PM", "2006 04 05 12:34:56", 1285b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1286b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMM dd yyyy hh:mm a", "September 27, 1964 21:56 PM", "1964 09 28 09:56:00", 1287b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "November 4, 2008 0:13 AM", "2008 11 04 00:13:00", 1288b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1289b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "HH'h'mm'min'ss's'", "12h34min56s", "1970 01 01 12:34:56", 1290b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "12h34mi56s", "1970 01 01 12:34:56", 1291b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "12h34m56s", "1970 01 01 12:34:56", 1292b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho NULL, "12:34:56", "1970 01 01 12:34:56" 1293b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1294b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t DATA_len = sizeof(DATA)/sizeof(DATA[0]); 1295b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1296b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectParse(DATA, DATA_len, Locale("en")); 1297b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1298b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1299b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1300b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test handling of "HHmmss" pattern. 1301b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1302b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestExactCountFormat() { 1303b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* DATA[] = { 1304b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1305b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1306b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // pattern, input, expected parse or NULL if expect parse failure 1307b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "HHmmss", "123456", "1970 01 01 12:34:56", 1308b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "12345", "1970 01 01 01:23:45", 1309b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "1234", NULL, 1310b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "00-05", NULL, 1311b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "12-34", NULL, 1312b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, "00+05", NULL, 1313b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ahhmm", "PM730", "1970 01 01 19:30:00", 1314b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1315b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t DATA_len = sizeof(DATA)/sizeof(DATA[0]); 1316b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1317b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectParse(DATA, DATA_len, Locale("en")); 1318b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1319b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1320b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1321b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test handling of white space. 1322b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1323b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestWhiteSpaceParsing() { 1324b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* DATA[] = { 1325b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd", 132650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1327b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // pattern, input, expected parse or null if expect parse failure 132850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1329b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Pattern space run should parse input text space run 1330b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MM d yy", " 04 01 03", "2003 04 01", 1331b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru NULL, " 04 01 03 ", "2003 04 01", 1332b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1333b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t DATA_len = sizeof(DATA)/sizeof(DATA[0]); 133450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1335b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectParse(DATA, DATA_len, Locale("en")); 1336b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1337b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1338b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1339b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestInvalidPattern() { 1340b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 1341b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat f(UnicodeString("Yesterday"), ec); 134250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(ec)) { 134350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail construct SimpleDateFormat: %s", u_errorName(ec)); 134450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 134550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 1346b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString out; 1347b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru FieldPosition pos; 1348b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru f.format((UDate)0, out, pos); 1349b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(out); 1350b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // The bug is that the call to format() will crash. By not 1351b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // crashing, the test passes. 1352b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1353b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1354b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestGreekMay() { 1355b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 1356b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date = -9896080848000.0; 1357b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat fmt("EEEE, dd MMMM yyyy h:mm:ss a", Locale("el", "", ""), ec); 135850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(ec)) { 135950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail construct SimpleDateFormat: %s", u_errorName(ec)); 136050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 136150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 1362b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString str; 1363b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.format(date, str); 1364b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition pos(0); 1365b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d2 = fmt.parse(str, pos); 1366b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (date != d2) { 1367b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: unable to parse strings where case-folding changes length"); 1368b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1369b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1370b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1371b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestStandAloneMonths() 1372b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1373b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *EN_DATA[] = { 1374b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1375b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1376b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1377b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1378b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy LLLL dd H:mm:ss", "F", "2004 03 10 16:36:31", "2004 March 10 16:36:31", 1379b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 138050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1381b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 01 01 0:00:00", "January", "1970 01 01 0:00:00", 1382b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 02 01 0:00:00", "February", "1970 02 01 0:00:00", 1383b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 03 01 0:00:00", "March", "1970 03 01 0:00:00", 1384b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 04 01 0:00:00", "April", "1970 04 01 0:00:00", 1385b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 05 01 0:00:00", "May", "1970 05 01 0:00:00", 1386b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 06 01 0:00:00", "June", "1970 06 01 0:00:00", 1387b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 07 01 0:00:00", "July", "1970 07 01 0:00:00", 1388b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 08 01 0:00:00", "August", "1970 08 01 0:00:00", 1389b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 09 01 0:00:00", "September", "1970 09 01 0:00:00", 1390b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 10 01 0:00:00", "October", "1970 10 01 0:00:00", 1391b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 11 01 0:00:00", "November", "1970 11 01 0:00:00", 1392b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 12 01 0:00:00", "December", "1970 12 01 0:00:00", 139350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1394b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 01 01 0:00:00", "Jan", "1970 01 01 0:00:00", 1395b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 02 01 0:00:00", "Feb", "1970 02 01 0:00:00", 1396b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 03 01 0:00:00", "Mar", "1970 03 01 0:00:00", 1397b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 04 01 0:00:00", "Apr", "1970 04 01 0:00:00", 1398b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 05 01 0:00:00", "May", "1970 05 01 0:00:00", 1399b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 06 01 0:00:00", "Jun", "1970 06 01 0:00:00", 1400b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 07 01 0:00:00", "Jul", "1970 07 01 0:00:00", 1401b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 08 01 0:00:00", "Aug", "1970 08 01 0:00:00", 1402b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 09 01 0:00:00", "Sep", "1970 09 01 0:00:00", 1403b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 10 01 0:00:00", "Oct", "1970 10 01 0:00:00", 1404b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 11 01 0:00:00", "Nov", "1970 11 01 0:00:00", 1405b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 12 01 0:00:00", "Dec", "1970 12 01 0:00:00", 1406b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 140750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1408b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *CS_DATA[] = { 1409b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1410b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1411b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1412b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1413b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1414b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy LLLL dd H:mm:ss", "F", "2004 04 10 16:36:31", "2004 duben 10 16:36:31", 1415b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MMMM dd H:mm:ss", "F", "2004 04 10 16:36:31", "2004 dubna 10 16:36:31", 1416b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1417b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 141850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1419b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 01 01 0:00:00", "leden", "1970 01 01 0:00:00", 1420b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 02 01 0:00:00", "\\u00FAnor", "1970 02 01 0:00:00", 1421b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 03 01 0:00:00", "b\\u0159ezen", "1970 03 01 0:00:00", 1422b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 04 01 0:00:00", "duben", "1970 04 01 0:00:00", 1423b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 05 01 0:00:00", "kv\\u011Bten", "1970 05 01 0:00:00", 1424b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 06 01 0:00:00", "\\u010Derven", "1970 06 01 0:00:00", 1425b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 07 01 0:00:00", "\\u010Dervenec", "1970 07 01 0:00:00", 1426b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 08 01 0:00:00", "srpen", "1970 08 01 0:00:00", 1427b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 09 01 0:00:00", "z\\u00E1\\u0159\\u00ED", "1970 09 01 0:00:00", 1428b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 10 01 0:00:00", "\\u0159\\u00EDjen", "1970 10 01 0:00:00", 1429b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 11 01 0:00:00", "listopad", "1970 11 01 0:00:00", 1430b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLL", "fp", "1970 12 01 0:00:00", "prosinec", "1970 12 01 0:00:00", 1431b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1432b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 01 01 0:00:00", "1.", "1970 01 01 0:00:00", 1433b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 02 01 0:00:00", "2.", "1970 02 01 0:00:00", 1434b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 03 01 0:00:00", "3.", "1970 03 01 0:00:00", 1435b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 04 01 0:00:00", "4.", "1970 04 01 0:00:00", 1436b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 05 01 0:00:00", "5.", "1970 05 01 0:00:00", 1437b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 06 01 0:00:00", "6.", "1970 06 01 0:00:00", 1438b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 07 01 0:00:00", "7.", "1970 07 01 0:00:00", 1439b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 08 01 0:00:00", "8.", "1970 08 01 0:00:00", 1440b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 09 01 0:00:00", "9.", "1970 09 01 0:00:00", 1441b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 10 01 0:00:00", "10.", "1970 10 01 0:00:00", 1442b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 11 01 0:00:00", "11.", "1970 11 01 0:00:00", 1443b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLL", "fp", "1970 12 01 0:00:00", "12.", "1970 12 01 0:00:00", 1444b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 144550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1446b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(EN_DATA, ARRAY_SIZE(EN_DATA), Locale("en", "", "")); 1447b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(CS_DATA, ARRAY_SIZE(CS_DATA), Locale("cs", "", "")); 1448b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1449b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1450b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestStandAloneDays() 1451b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1452b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *EN_DATA[] = { 1453b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1454b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1455b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 04 0:00:00", "Sunday", "1970 01 04 0:00:00", 1456b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 05 0:00:00", "Monday", "1970 01 05 0:00:00", 1457b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 06 0:00:00", "Tuesday", "1970 01 06 0:00:00", 1458b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 07 0:00:00", "Wednesday", "1970 01 07 0:00:00", 1459b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 01 0:00:00", "Thursday", "1970 01 01 0:00:00", 1460b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 02 0:00:00", "Friday", "1970 01 02 0:00:00", 1461b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 03 0:00:00", "Saturday", "1970 01 03 0:00:00", 146250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1463b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 04 0:00:00", "Sun", "1970 01 04 0:00:00", 1464b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 05 0:00:00", "Mon", "1970 01 05 0:00:00", 1465b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 06 0:00:00", "Tue", "1970 01 06 0:00:00", 1466b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 07 0:00:00", "Wed", "1970 01 07 0:00:00", 1467b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 01 0:00:00", "Thu", "1970 01 01 0:00:00", 1468b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 02 0:00:00", "Fri", "1970 01 02 0:00:00", 1469b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 03 0:00:00", "Sat", "1970 01 03 0:00:00", 1470b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 147150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1472b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *CS_DATA[] = { 1473b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1474b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1475b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 04 0:00:00", "ned\\u011Ble", "1970 01 04 0:00:00", 1476b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 05 0:00:00", "pond\\u011Bl\\u00ED", "1970 01 05 0:00:00", 1477b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 06 0:00:00", "\\u00FAter\\u00FD", "1970 01 06 0:00:00", 1478b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 07 0:00:00", "st\\u0159eda", "1970 01 07 0:00:00", 1479b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 01 0:00:00", "\\u010Dtvrtek", "1970 01 01 0:00:00", 1480b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 02 0:00:00", "p\\u00E1tek", "1970 01 02 0:00:00", 1481b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "cccc", "fp", "1970 01 03 0:00:00", "sobota", "1970 01 03 0:00:00", 148250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1483b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 04 0:00:00", "ne", "1970 01 04 0:00:00", 1484b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 05 0:00:00", "po", "1970 01 05 0:00:00", 1485b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 06 0:00:00", "\\u00FAt", "1970 01 06 0:00:00", 1486b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 07 0:00:00", "st", "1970 01 07 0:00:00", 1487b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 01 0:00:00", "\\u010Dt", "1970 01 01 0:00:00", 1488b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 02 0:00:00", "p\\u00E1", "1970 01 02 0:00:00", 1489b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccc", "fp", "1970 01 03 0:00:00", "so", "1970 01 03 0:00:00", 1490b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 149150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1492b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(EN_DATA, ARRAY_SIZE(EN_DATA), Locale("en", "", "")); 1493b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(CS_DATA, ARRAY_SIZE(CS_DATA), Locale("cs", "", "")); 1494b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1495b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1496b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestNarrowNames() 1497b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1498b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *EN_DATA[] = { 1499b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1500b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1501b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MMMMM dd H:mm:ss", "2004 03 10 16:36:31", "2004 M 10 16:36:31", 1502b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy LLLLL dd H:mm:ss", "2004 03 10 16:36:31", "2004 M 10 16:36:31", 150350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1504b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 01 01 0:00:00", "J", 1505b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 02 01 0:00:00", "F", 1506b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 03 01 0:00:00", "M", 1507b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 04 01 0:00:00", "A", 1508b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 05 01 0:00:00", "M", 1509b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 06 01 0:00:00", "J", 1510b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 07 01 0:00:00", "J", 1511b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 08 01 0:00:00", "A", 1512b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 09 01 0:00:00", "S", 1513b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 10 01 0:00:00", "O", 1514b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 11 01 0:00:00", "N", 1515b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMMM", "1970 12 01 0:00:00", "D", 151650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1517b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 01 01 0:00:00", "J", 1518b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 02 01 0:00:00", "F", 1519b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 03 01 0:00:00", "M", 1520b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 04 01 0:00:00", "A", 1521b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 05 01 0:00:00", "M", 1522b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 06 01 0:00:00", "J", 1523b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 07 01 0:00:00", "J", 1524b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 08 01 0:00:00", "A", 1525b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 09 01 0:00:00", "S", 1526b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 10 01 0:00:00", "O", 1527b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 11 01 0:00:00", "N", 1528b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 12 01 0:00:00", "D", 1529b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1530b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 04 0:00:00", "S", 1531b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 05 0:00:00", "M", 1532b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 06 0:00:00", "T", 1533b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 07 0:00:00", "W", 1534b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 01 0:00:00", "T", 1535b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 02 0:00:00", "F", 1536b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 03 0:00:00", "S", 153750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1538b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 04 0:00:00", "S", 1539b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 05 0:00:00", "M", 1540b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 06 0:00:00", "T", 1541b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 07 0:00:00", "W", 1542b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 01 0:00:00", "T", 1543b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 02 0:00:00", "F", 1544b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 03 0:00:00", "S", 1545b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 154650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1547b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *CS_DATA[] = { 1548b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm:ss", 1549b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1550b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy LLLLL dd H:mm:ss", "2004 04 10 16:36:31", "2004 d 10 16:36:31", 1551b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "yyyy MMMMM dd H:mm:ss", "2004 04 10 16:36:31", "2004 4 10 16:36:31", 1552b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1553b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMMM", "1970 01 01 0:00:00", "1", 1554b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMMM", "1970 02 01 0:00:00", "2", 1555b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMMM", "1970 03 01 0:00:00", "3", 1556b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMMM", "1970 04 01 0:00:00", "4", 1557b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMMM", "1970 05 01 0:00:00", "5", 1558b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMMM", "1970 06 01 0:00:00", "6", 1559b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMMM", "1970 07 01 0:00:00", "7", 1560b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMMM", "1970 08 01 0:00:00", "8", 1561b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMMM", "1970 09 01 0:00:00", "9", 1562b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMMM", "1970 10 01 0:00:00", "10", 1563b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMMM", "1970 11 01 0:00:00", "11", 1564b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "MMMMM", "1970 12 01 0:00:00", "12", 156550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1566b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 01 01 0:00:00", "l", 1567b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 02 01 0:00:00", "\\u00FA", 1568b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 03 01 0:00:00", "b", 1569b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 04 01 0:00:00", "d", 1570b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 05 01 0:00:00", "k", 1571b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 06 01 0:00:00", "\\u010D", 1572b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 07 01 0:00:00", "\\u010D", 1573b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 08 01 0:00:00", "s", 1574b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 09 01 0:00:00", "z", 1575b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 10 01 0:00:00", "\\u0159", 1576b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 11 01 0:00:00", "l", 1577b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "LLLLL", "1970 12 01 0:00:00", "p", 1578b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1579b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 04 0:00:00", "N", 1580b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 05 0:00:00", "P", 1581b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 06 0:00:00", "\\u00DA", 1582b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 07 0:00:00", "S", 1583b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 01 0:00:00", "\\u010C", 1584b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 02 0:00:00", "P", 1585b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "EEEEE", "1970 01 03 0:00:00", "S", 1586b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1587b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 04 0:00:00", "N", 1588b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 05 0:00:00", "P", 1589b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 06 0:00:00", "\\u00DA", 1590b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 07 0:00:00", "S", 1591b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 01 0:00:00", "\\u010C", 1592b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 02 0:00:00", "P", 1593b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "ccccc", "1970 01 03 0:00:00", "S", 1594b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 159550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1596b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectFormat(EN_DATA, ARRAY_SIZE(EN_DATA), Locale("en", "", "")); 1597b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expectFormat(CS_DATA, ARRAY_SIZE(CS_DATA), Locale("cs", "", "")); 1598b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1599b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1600b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestEras() 1601b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1602b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *EN_DATA[] = { 1603b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd", 1604b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1605b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy G", "fp", "1951 07 17", "July 17 1951 AD", "1951 07 17", 1606b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy GG", "fp", "1951 07 17", "July 17 1951 AD", "1951 07 17", 1607b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy GGG", "fp", "1951 07 17", "July 17 1951 AD", "1951 07 17", 1608b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy GGGG", "fp", "1951 07 17", "July 17 1951 Anno Domini", "1951 07 17", 1609b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1610b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy G", "fp", "-438 07 17", "July 17 0439 BC", "-438 07 17", 1611b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy GG", "fp", "-438 07 17", "July 17 0439 BC", "-438 07 17", 1612b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy GGG", "fp", "-438 07 17", "July 17 0439 BC", "-438 07 17", 1613b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "MMMM dd yyyy GGGG", "fp", "-438 07 17", "July 17 0439 Before Christ", "-438 07 17", 1614b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 161550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1616b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(EN_DATA, ARRAY_SIZE(EN_DATA), Locale("en", "", "")); 1617b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1618b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1619b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestQuarters() 1620b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1621b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *EN_DATA[] = { 1622b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd", 1623b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1624b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "Q", "fp", "1970 01 01", "1", "1970 01 01", 1625b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "QQ", "fp", "1970 04 01", "02", "1970 04 01", 1626b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "QQQ", "fp", "1970 07 01", "Q3", "1970 07 01", 1627b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "QQQQ", "fp", "1970 10 01", "4th quarter", "1970 10 01", 1628b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1629b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "q", "fp", "1970 01 01", "1", "1970 01 01", 1630b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "qq", "fp", "1970 04 01", "02", "1970 04 01", 1631b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "qqq", "fp", "1970 07 01", "Q3", "1970 07 01", 1632b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "qqqq", "fp", "1970 10 01", "4th quarter", "1970 10 01", 1633b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 163450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1635b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(EN_DATA, ARRAY_SIZE(EN_DATA), Locale("en", "", "")); 1636b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1637b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1638b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1639b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test parsing. Input is an array that starts with the following 1640b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * header: 1641b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1642b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [0] = pattern string to parse [i+2] with 1643b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1644b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * followed by test cases, each of which is 3 array elements: 1645b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1646b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i] = pattern, or NULL to reuse prior pattern 1647b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i+1] = input string 1648b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i+2] = expected parse result (parsed with pattern [0]) 1649b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1650b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If expect parse failure, then [i+2] should be NULL. 1651b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1652b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::expectParse(const char** data, int32_t data_length, 1653b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const Locale& loc) { 1654b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UDate FAIL = (UDate) -1; 1655b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UnicodeString FAIL_STR("parse failure"); 1656b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t i = 0; 1657b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1658b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 1659b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat fmt("", loc, ec); 1660b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat ref(data[i++], loc, ec); 1661b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat gotfmt("G yyyy MM dd HH:mm:ss z", loc, ec); 1662b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(ec)) { 166350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("FAIL: SimpleDateFormat constructor - %s", u_errorName(ec)); 1664b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1665b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1666b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1667b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* currentPat = NULL; 1668b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru while (i<data_length) { 1669b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* pattern = data[i++]; 1670b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* input = data[i++]; 1671b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* expected = data[i++]; 1672b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1673b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ec = U_ZERO_ERROR; 1674b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (pattern != NULL) { 1675b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.applyPattern(pattern); 1676b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru currentPat = pattern; 1677b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1678b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate got = fmt.parse(input, ec); 1679b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString gotstr(FAIL_STR); 1680b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(ec)) { 1681b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru got = FAIL; 1682b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 1683b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru gotstr.remove(); 1684b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru gotfmt.format(got, gotstr); 1685b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1686b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1687b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec2 = U_ZERO_ERROR; 1688b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate exp = FAIL; 1689b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString expstr(FAIL_STR); 1690b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (expected != NULL) { 1691b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expstr = expected; 1692b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru exp = ref.parse(expstr, ec2); 1693b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_FAILURE(ec2)) { 1694b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // This only happens if expected is in wrong format -- 1695b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // should never happen once test is debugged. 1696b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: Internal test error"); 1697b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1698b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1699b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1700b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1701b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (got == exp) { 1702b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"Ok: " + input + " x " + 170350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho currentPat + " => " + gotstr); 1704b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 1705b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: " + input + " x " + 1706b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru currentPat + " => " + gotstr + ", expected " + 1707b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expstr); 1708b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 170950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 1710b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1711b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1712b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1713b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test formatting and parsing. Input is an array that starts 1714b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * with the following header: 1715b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1716b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [0] = pattern string to parse [i+2] with 1717b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1718b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * followed by test cases, each of which is 3 array elements: 1719b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1720b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i] = pattern, or null to reuse prior pattern 1721b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i+1] = control string, either "fp", "pf", or "F". 1722b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i+2..] = data strings 1723b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1724b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The number of data strings depends on the control string. 1725b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Examples: 1726b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1727b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 'f': Format date [i+2] (as parsed using pattern [0]) and expect string [i+3]. 1728b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 'p': Parse string [i+3] and expect date [i+4]. 1729b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1730b13da9df870a61b11249bf741347908dbea0edd8Jean-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" 1731b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 'F': Format date [i+2] and expect string [i+3], 1732b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * then parse string [i+3] and expect date [i+2]. 1733b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1734b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1735b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 'p': Parse string [i+2] and expect date [i+3]. 1736b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 'f': Format date [i+3] and expect string [i+4]. 1737b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1738b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::expect(const char** data, int32_t data_length, 1739b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const Locale& loc) { 1740b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t i = 0; 1741b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 1742b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString str, str2; 1743b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat fmt("", loc, ec); 1744b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat ref(data[i++], loc, ec); 1745b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat univ("EE G yyyy MM dd HH:mm:ss.SSS z", loc, ec); 174650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(ec)) { 174750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail construct SimpleDateFormat: %s", u_errorName(ec)); 174850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 174950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 1750b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1751b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString currentPat; 1752b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru while (i<data_length) { 1753b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* pattern = data[i++]; 1754b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (pattern != NULL) { 1755b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.applyPattern(pattern); 1756b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru currentPat = pattern; 1757b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1758b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1759b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* control = data[i++]; 1760b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1761b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (uprv_strcmp(control, "fp") == 0) { 1762b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // 'f' 1763b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* datestr = data[i++]; 1764b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* string = data[i++]; 1765b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date = ref.parse(ctou(datestr), ec); 1766b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!assertSuccess("parse", ec)) return; 1767b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".format(" + datestr + ")", 1768b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ctou(string), 1769b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.format(date, str.remove())); 1770b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // 'p' 1771b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru datestr = data[i++]; 1772b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru date = ref.parse(ctou(datestr), ec); 1773b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!assertSuccess("parse", ec)) return; 1774b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate parsedate = fmt.parse(ctou(string), ec); 1775b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (assertSuccess((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")", ec)) { 1776b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")", 1777b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(date, str.remove()), 1778b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(parsedate, str2.remove())); 1779b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1780b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1781b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1782b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else if (uprv_strcmp(control, "pf") == 0) { 1783b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // 'p' 1784b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* string = data[i++]; 1785b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* datestr = data[i++]; 1786b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date = ref.parse(ctou(datestr), ec); 1787b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!assertSuccess("parse", ec)) return; 1788b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate parsedate = fmt.parse(ctou(string), ec); 1789b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (assertSuccess((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")", ec)) { 1790b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")", 1791b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(date, str.remove()), 1792b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(parsedate, str2.remove())); 1793b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1794b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // 'f' 1795b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru string = data[i++]; 1796b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".format(" + datestr + ")", 1797b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ctou(string), 1798b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.format(date, str.remove())); 1799b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1800b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1801b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else if (uprv_strcmp(control, "F") == 0) { 1802b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* datestr = data[i++]; 1803b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* string = data[i++]; 1804b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date = ref.parse(ctou(datestr), ec); 1805b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!assertSuccess("parse", ec)) return; 1806b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".format(" + datestr + ")", 1807b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ctou(string), 1808b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.format(date, str.remove())); 1809b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1810b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate parsedate = fmt.parse(string, ec); 1811b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (assertSuccess((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")", ec)) { 1812b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".parse(" + string + ")", 1813b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(date, str.remove()), 1814b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(parsedate, str2.remove())); 1815b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1816b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1817b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1818b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru else { 1819b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln((UnicodeString)"FAIL: Invalid control string " + control); 1820b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 1821b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1822b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1823b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1824b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1825b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 1826b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Test formatting. Input is an array that starts 1827b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * with the following header: 1828b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1829b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [0] = pattern string to parse [i+2] with 1830b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1831b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * followed by test cases, each of which is 3 array elements: 1832b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1833b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i] = pattern, or null to reuse prior pattern 1834b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i+1] = data string a 1835b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [i+2] = data string b 1836b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1837b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Examples: 1838b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Format date [i+1] and expect string [i+2]. 1839b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1840b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * "y/M/d H:mm:ss.SSSS", "2004/3/10 16:36:31.5679", "2004 03 10 16:36:31.567" 1841b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1842b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::expectFormat(const char** data, int32_t data_length, 1843b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const Locale& loc) { 1844b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t i = 0; 1845b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode ec = U_ZERO_ERROR; 1846b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString str, str2; 1847b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat fmt("", loc, ec); 1848b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat ref(data[i++], loc, ec); 1849b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat univ("EE G yyyy MM dd HH:mm:ss.SSS z", loc, ec); 185050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(ec)) { 185150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail construct SimpleDateFormat: %s", u_errorName(ec)); 185250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 185350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 1854b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1855b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString currentPat; 1856b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1857b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru while (i<data_length) { 1858b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* pattern = data[i++]; 1859b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (pattern != NULL) { 1860b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.applyPattern(pattern); 1861b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru currentPat = pattern; 1862b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1863b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1864b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* datestr = data[i++]; 1865b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* string = data[i++]; 1866b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate date = ref.parse(ctou(datestr), ec); 1867b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (!assertSuccess("parse", ec)) return; 1868b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru assertEquals((UnicodeString)"\"" + currentPat + "\".format(" + datestr + ")", 1869b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ctou(string), 1870b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fmt.format(date, str.remove())); 1871b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1872b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1873b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1874b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestGenericTime() { 1875b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const Locale en("en"); 1876b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // Note: We no longer parse strings in different styles. 1877b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho/* 1878b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* ZDATA[] = { 1879b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm zzz", 1880b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // round trip 1881b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm zzzz", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 Pacific Standard Time", 1882b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm zzz", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 PST", 1883b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm vvvv", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 Pacific Time", 1884b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm v", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 PT", 1885b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // non-generic timezone string influences dst offset even if wrong for date/time 1886b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1887b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1888b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1889b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1890b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // generic timezone generates dst offset appropriate for local time 1891b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1892b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1893b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1894b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1895b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // daylight savings time transition edge cases. 1896b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // time to parse does not really exist, PT interpreted as earlier time 1897b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1898b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1899b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1900b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1901b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1902b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1903b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm", "pf", "2005/4/3 2:30", "2005 04 03 03:30 PDT", "2005/4/3 3:30", 1904b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // time to parse is ambiguous, PT interpreted as later time 1905b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1906b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1907b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1908b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1909b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1910b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1911b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1912b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1913b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1914b13da9df870a61b11249bf741347908dbea0edd8Jean-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", 1915b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "y/M/d H:mm", "pf", "2004/10/31 1:30", "2004 10 31 01:30 PST", "2004/10/31 1:30", 1916b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1917b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho*/ 1918b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho const char* ZDATA[] = { 1919b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "yyyy MM dd HH:mm zzz", 1920b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // round trip 1921b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm zzzz", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 Pacific Standard Time", 1922b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm zzz", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 PST", 1923b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm vvvv", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 Pacific Time", 1924b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm v", "F", "2004 01 01 01:00 PST", "2004/1/1 1:00 PT", 1925b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // non-generic timezone string influences dst offset even if wrong for date/time 1926b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "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", 1927b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "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", 1928b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // generic timezone generates dst offset appropriate for local time 1929b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm zzz", "pf", "2004/1/1 1:00 PST", "2004 01 01 01:00 PST", "2004/1/1 1:00 PST", 1930b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm vvvv", "pf", "2004/1/1 1:00 Pacific Time", "2004 01 01 01:00 PST", "2004/1/1 1:00 Pacific Time", 1931b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm zzz", "pf", "2004/7/1 1:00 PDT", "2004 07 01 01:00 PDT", "2004/7/1 1:00 PDT", 1932b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm vvvv", "pf", "2004/7/1 1:00 Pacific Time", "2004 07 01 01:00 PDT", "2004/7/1 1:00 Pacific Time", 1933b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // daylight savings time transition edge cases. 1934b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // time to parse does not really exist, PT interpreted as earlier time 1935b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "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", 1936b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "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", 1937b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "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", 1938b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm", "pf", "2005/4/3 2:30", "2005 04 03 03:30 PDT", "2005/4/3 3:30", 1939b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // time to parse is ambiguous, PT interpreted as later time 1940b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "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", 1941b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm", "pf", "2005/10/30 1:30 PT", "2005 10 30 01:30 PST", "2005/10/30 1:30", 1942b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1943b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "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", 1944b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "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", 1945b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "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", 1946b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm", "pf", "2004/10/31 1:30", "2004 10 31 01:30 PST", "2004/10/31 1:30", 1947b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho }; 1948b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1949b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t ZDATA_length = sizeof(ZDATA)/ sizeof(ZDATA[0]); 1950b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(ZDATA, ZDATA_length, en); 1951b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1952b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 1953b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1954b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho logln("cross format/parse tests"); // Note: We no longer support cross format/parse 1955b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString basepat("yy/MM/dd H:mm "); 195650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho SimpleDateFormat formats[] = { 1957b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat(basepat + "vvv", en, status), 1958b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat(basepat + "vvvv", en, status), 1959b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat(basepat + "zzz", en, status), 1960b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat(basepat + "zzzz", en, status) 1961b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 196250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (U_FAILURE(status)) { 196350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Fail construct SimpleDateFormat: %s", u_errorName(status)); 196450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return; 196550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 1966b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t formats_length = sizeof(formats)/sizeof(formats[0]); 1967b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1968b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString test; 1969b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat univ("yyyy MM dd HH:mm zzz", en, status); 1970b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 197150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho const UnicodeString times[] = { 197250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho "2004 01 02 03:04 PST", 197350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho "2004 07 08 09:10 PDT" 1974b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1975b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t times_length = sizeof(times)/sizeof(times[0]); 1976b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int i = 0; i < times_length; ++i) { 1977b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d = univ.parse(times[i], status); 1978b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln(UnicodeString("\ntime: ") + d); 1979b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int j = 0; j < formats_length; ++j) { 1980b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru test.remove(); 1981b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru formats[j].format(d, test); 1982b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("\ntest: '" + test + "'"); 1983b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int k = 0; k < formats_length; ++k) { 1984b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate t = formats[k].parse(test, status); 1985b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (U_SUCCESS(status)) { 1986b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (d != t) { 198750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln((UnicodeString)"FAIL: format " + k + 198850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho " incorrectly parsed output of format " + j + 1989b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru " (" + test + "), returned " + 1990b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru dateToString(t) + " instead of " + dateToString(d)); 1991b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 1992b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln((UnicodeString)"OK: format " + k + " parsed ok"); 1993b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1994b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else if (status == U_PARSE_ERROR) { 199550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln((UnicodeString)"FAIL: format " + k + 199650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho " could not parse output of format " + j + 1997b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru " (" + test + ")"); 1998b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 1999b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2000b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2001b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2002b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 2003b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2004b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestGenericTimeZoneOrder() { 2005b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // generic times should parse the same no matter what the placement of the time zone string 2006b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2007b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // Note: We no longer support cross style format/parse 2008b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 2009b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho //const char* XDATA[] = { 2010b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // "yyyy MM dd HH:mm zzz", 2011b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // // standard time, explicit daylight/standard 2012b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // "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", 2013b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // "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", 2014b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // "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", 2015b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 2016b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // // standard time, generic 2017b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // "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", 2018b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // "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", 2019b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // "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", 2020b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 2021b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // // dahylight time, explicit daylight/standard 2022b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // "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", 2023b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // "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", 2024b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // "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", 2025b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 2026b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // // daylight time, generic 2027b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // "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", 2028b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // "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", 2029b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // "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", 2030b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho //}; 2031b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char* XDATA[] = { 2032b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru "yyyy MM dd HH:mm zzz", 2033b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // standard time, explicit daylight/standard 2034b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm zzz", "pf", "2004/1/1 1:00 PST", "2004 01 01 01:00 PST", "2004/1/1 1:00 PST", 2035b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d zzz H:mm", "pf", "2004/1/1 PST 1:00", "2004 01 01 01:00 PST", "2004/1/1 PST 1:00", 2036b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "zzz y/M/d H:mm", "pf", "PST 2004/1/1 1:00", "2004 01 01 01:00 PST", "PST 2004/1/1 1:00", 2037b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2038b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // standard time, generic 2039b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm vvvv", "pf", "2004/1/1 1:00 Pacific Time", "2004 01 01 01:00 PST", "2004/1/1 1:00 Pacific Time", 2040b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d vvvv H:mm", "pf", "2004/1/1 Pacific Time 1:00", "2004 01 01 01:00 PST", "2004/1/1 Pacific Time 1:00", 2041b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "vvvv y/M/d H:mm", "pf", "Pacific Time 2004/1/1 1:00", "2004 01 01 01:00 PST", "Pacific Time 2004/1/1 1:00", 2042b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2043b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // dahylight time, explicit daylight/standard 2044b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm zzz", "pf", "2004/7/1 1:00 PDT", "2004 07 01 01:00 PDT", "2004/7/1 1:00 PDT", 2045b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d zzz H:mm", "pf", "2004/7/1 PDT 1:00", "2004 07 01 01:00 PDT", "2004/7/1 PDT 1:00", 2046b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "zzz y/M/d H:mm", "pf", "PDT 2004/7/1 1:00", "2004 07 01 01:00 PDT", "PDT 2004/7/1 1:00", 2047b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2048b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // daylight time, generic 2049b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d H:mm v", "pf", "2004/7/1 1:00 PT", "2004 07 01 01:00 PDT", "2004/7/1 1:00 PT", 2050b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "y/M/d v H:mm", "pf", "2004/7/1 PT 1:00", "2004 07 01 01:00 PDT", "2004/7/1 PT 1:00", 2051b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho "v y/M/d H:mm", "pf", "PT 2004/7/1 1:00", "2004 07 01 01:00 PDT", "PT 2004/7/1 1:00", 2052b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 2053b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const int32_t XDATA_length = sizeof(XDATA)/sizeof(XDATA[0]); 2054b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale en("en"); 2055b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect(XDATA, XDATA_length, en); 2056b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 2057b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2058b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestZTimeZoneParsing(void) { 2059b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 2060b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const Locale en("en"); 2061b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString test; 2062b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //SimpleDateFormat univ("yyyy-MM-dd'T'HH:mm Z", en, status); 2063b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat univ("HH:mm Z", en, status); 206450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (failure(status, "construct SimpleDateFormat", TRUE)) return; 2065b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const TimeZone *t = TimeZone::getGMT(); 2066b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.setTimeZone(*t); 206750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2068b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.setLenient(false); 2069b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition pp(0); 2070b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru struct { 2071b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString input; 2072b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString expected_result; 2073b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } tests[] = { 2074b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "11:00 -0200", "13:00 +0000" }, 2075b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "11:00 +0200", "09:00 +0000" }, 2076b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "11:00 +0400", "07:00 +0000" }, 2077b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "11:00 +0530", "05:30 +0000" } 2078b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 2079b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2080b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result; 2081b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t tests_length = sizeof(tests)/sizeof(tests[0]); 2082b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru for (int i = 0; i < tests_length; ++i) { 2083b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru pp.setIndex(0); 2084b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d = univ.parse(tests[i].input, pp); 2085b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(pp.getIndex() != tests[i].input.length()){ 2086b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho errln("Test %i: setZoneString() did not succeed. Consumed: %i instead of %i", 2087b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho i, pp.getIndex(), tests[i].input.length()); 2088b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 208950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho } 2090b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru result.remove(); 2091b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru univ.format(d, result); 2092b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(result != tests[i].expected_result) { 2093b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("Expected " + tests[i].expected_result 2094b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru + " got " + result); 2095b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 2096b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2097b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("SUCCESS: Parsed " + tests[i].input 2098b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru + " got " + result 2099b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru + " expected " + tests[i].expected_result); 2100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 2102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestHost(void) 2104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 2105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifdef U_WINDOWS 2106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Win32DateTimeTest::testLocales(this); 2107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif 2108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 2109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru// Relative Date Tests 2111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 211250294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehovoid DateFormatTest::TestRelative(int daysdelta, 2113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const Locale& loc, 2114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *expectChars) { 2115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru char banner[25]; 2116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru sprintf(banner, "%d", daysdelta); 2117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString bannerStr(banner, ""); 211850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 212050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru FieldPosition pos(0); 2122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString test; 2123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale en("en"); 2124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *fullrelative = DateFormat::createDateInstance(DateFormat::kFullRelative, loc); 2125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (fullrelative == NULL) { 212785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("DateFormat::createDateInstance(DateFormat::kFullRelative, %s) returned NULL", loc.getName()); 2128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 2129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *full = DateFormat::createDateInstance(DateFormat::kFull , loc); 213250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (full == NULL) { 2134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("DateFormat::createDateInstance(DateFormat::kFull, %s) returned NULL", loc.getName()); 2135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 2136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 213750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *en_full = DateFormat::createDateInstance(DateFormat::kFull, en); 213950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (en_full == NULL) { 2141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("DateFormat::createDateInstance(DateFormat::kFull, en) returned NULL"); 2142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 2143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 214450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *en_fulltime = DateFormat::createDateTimeInstance(DateFormat::kFull,DateFormat::kFull,en); 214650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (en_fulltime == NULL) { 2148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, en) returned NULL"); 2149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 2150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 215150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result; 2153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString normalResult; 2154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString expect; 2155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString parseResult; 215650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Calendar *c = Calendar::createInstance(status); 2158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Today = Today 2160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru c->setTime(Calendar::getNow(), status); 2161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(daysdelta != 0) { 2162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru c->add(Calendar::DATE,daysdelta,status); 2163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 2165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // calculate the expected string 2167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(expectChars != NULL) { 2168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru expect = expectChars; 2169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 2170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full->format(*c, expect, pos); // expected = normal full 2171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 217250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fullrelative ->format(*c, result, pos); 2174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru en_full ->format(*c, normalResult, pos); 217550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(result != expect) { 2177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: Relative Format ["+bannerStr+"] of "+normalResult+" failed, expected "+expect+" but got " + result); 2178b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 2179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("PASS: Relative Format ["+bannerStr+"] of "+normalResult+" got " + result); 2180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 218150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 218250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru //verify 2184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate d = fullrelative->parse(result, status); 2185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 218650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2187b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString parseFormat; // parse rel->format full 2188b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru en_full->format(d, parseFormat, status); 218950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString origFormat; 2191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru en_full->format(*c, origFormat, pos); 219250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2193b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(parseFormat!=origFormat) { 2194b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: Relative Parse ["+bannerStr+"] of "+result+" failed, expected "+parseFormat+" but got "+origFormat); 2195b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 2196b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("PASS: Relative Parse ["+bannerStr+"] of "+result+" passed, got "+parseFormat); 2197b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2198b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2199b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete full; 2200b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fullrelative; 2201b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete en_fulltime; 2202b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete en_full; 2203b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete c; 2204b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 2205b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2206b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2207b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestRelative(void) 2208b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 2209b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale en("en"); 2210b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( 0, en, "Today"); 2211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative(-1, en, "Yesterday"); 2212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( 1, en, "Tomorrow"); 2213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( 2, en, NULL); 2214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( -2, en, NULL); 2215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( 3, en, NULL); 2216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( -3, en, NULL); 2217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( 300, en, NULL); 2218b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TestRelative( -300, en, NULL); 2219b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 2220b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestRelativeClone(void) 2222b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 2223b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 2224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Verify that a cloned formatter gives the same results 2225b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru and is useable after the original has been deleted. 2226b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 2227b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 2228b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale loc("en"); 2229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate now = Calendar::getNow(); 2230b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *full = DateFormat::createDateInstance(DateFormat::kFullRelative, loc); 2231b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (full == NULL) { 223285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("FAIL: Can't create Relative date instance"); 2233b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 2234b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2235b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result1; 2236b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full->format(now, result1, status); 2237b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Format *fullClone = full->clone(); 2238b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete full; 2239b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full = NULL; 2240b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result2; 2242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fullClone->format(now, result2, status); 2243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 2244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (result1 != result2) { 2245b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: Clone returned different result from non-clone."); 2246b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2247b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fullClone; 2248b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 2249b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2250b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestHostClone(void) 2251b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 2252b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 2253b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Verify that a cloned formatter gives the same results 2254b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru and is useable after the original has been deleted. 2255b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 2256b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // This is mainly important on Windows. 2257b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status = U_ZERO_ERROR; 2258b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale loc("en_US@compat=host"); 2259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate now = Calendar::getNow(); 2260b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *full = DateFormat::createDateInstance(DateFormat::kFull, loc); 2261b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (full == NULL) { 226285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("FAIL: Can't create Relative date instance"); 2263b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return; 2264b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2265b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result1; 2266b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full->format(now, result1, status); 2267b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Format *fullClone = full->clone(); 2268b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete full; 2269b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru full = NULL; 2270b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2271b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString result2; 2272b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru fullClone->format(now, result2, status); 2273b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ASSERT_OK(status); 2274b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if (result1 != result2) { 2275b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: Clone returned different result from non-clone."); 2276b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 2277b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete fullClone; 2278b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 2279b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2280b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestTimeZoneDisplayName() 2281b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 2282b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // This test data was ported from ICU4J. Don't know why the 6th column in there because it's not being 2283b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // used currently. 2284b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const char *fallbackTests[][6] = { 2285b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 2286b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00", "-8:00" }, 2287b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "PST", "America/Los_Angeles" }, 2288b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "V", "PST", "America/Los_Angeles" }, 2289b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "Pacific Standard Time", "America/Los_Angeles" }, 2290b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 2291b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" }, 2292b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "PDT", "America/Los_Angeles" }, 2293b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "V", "PDT", "America/Los_Angeles" }, 2294b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "Pacific Daylight Time", "America/Los_Angeles" }, 2295b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "PT", "America/Los_Angeles" }, 2296b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "Pacific Time", "America/Los_Angeles" }, 2297b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", "America/Los_Angeles", "2004-07-15T00:00:00Z", "VVVV", "United States Time (Los Angeles)", "America/Los_Angeles" }, 2298b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en_GB", "America/Los_Angeles", "2004-01-15T12:00:00Z", "z", "PST", "America/Los_Angeles" }, 2299b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "Z", "-0700", "-7:00" }, 2300b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" }, 2301b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "z", "MST", "America/Phoenix" }, 2302b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "V", "MST", "America/Phoenix" }, 2303b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-01-15T00:00:00Z", "zzzz", "Mountain Standard Time", "America/Phoenix" }, 2304b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 2305b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" }, 2306b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "z", "MST", "America/Phoenix" }, 2307b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "V", "MST", "America/Phoenix" }, 2308b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "zzzz", "Mountain Standard Time", "America/Phoenix" }, 2309b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "v", "MST", "America/Phoenix" }, 2310b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "vvvv", "Mountain Standard Time", "America/Phoenix" }, 2311b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", "America/Phoenix", "2004-07-15T00:00:00Z", "VVVV", "United States Time (Phoenix)", "America/Phoenix" }, 2312b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2313b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2314b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2315b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2316b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "V", "GMT-03:00", "-3:00" }, 2317b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "Argentina Time", "-3:00" }, 2318b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2319b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2320b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2321b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "V", "GMT-03:00", "-3:00" }, 2322b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "Argentina Time", "-3:00" }, 2323b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Argentina Time (Buenos Aires)", "America/Buenos_Aires" }, 2324b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Argentina Time", "America/Buenos_Aires" }, 2325b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "VVVV", "Argentina Time (Buenos Aires)", "America/Buenos_Aires" }, 2326b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2327b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2328b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2329b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2330b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "V", "GMT-03:00", "-3:00" }, 2331b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "Argentina Time", "-3:00" }, 2332b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2333b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2334b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2335b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "V", "GMT-03:00", "-3:00" }, 2336b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "Argentina Time", "-3:00" }, 2337b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Argentina Time (Buenos Aires)", "America/Buenos_Aires" }, 2338b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Argentina Time", "America/Buenos_Aires" }, 2339b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "VVVV", "Argentina Time (Buenos Aires)", "America/Buenos_Aires" }, 2340b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2341b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 2342b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "-5:00" }, 2343b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-05:00", "-5:00" }, 2344b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", "America/Havana", "2004-01-15T00:00:00Z", "V", "GMT-05:00", "-5:00" }, 2345b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "Cuba Standard Time", "-5:00" }, 2346b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 2347b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "-4:00" }, 2348b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-04:00", "-4:00" }, 2349b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", "America/Havana", "2004-07-15T00:00:00Z", "V", "GMT-04:00", "-4:00" }, 2350b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "Cuba Daylight Time", "-4:00" }, 2351b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "v", "Cuba Time", "America/Havana" }, 2352b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "Cuba Time", "America/Havana" }, 2353b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "America/Havana", "2004-07-15T00:00:00Z", "VVVV", "Cuba Time", "America/Havana" }, 2354b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2355b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 2356b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 2357b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" }, 2358b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "V", "AEDT", "+11:00" }, 2359b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "Australian Eastern Daylight Time", "+11:00" }, 2360b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 2361b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 2362b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" }, 2363b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "V", "AEST", "+10:00" }, 2364b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "Australian Eastern Standard Time", "+10:00" }, 2365b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "Australia Time (Sydney)", "Australia/Sydney" }, 2366b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "Eastern Australia Time", "Australia/Sydney" }, 2367b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", "Australia/ACT", "2004-07-15T00:00:00Z", "VVVV", "Australia Time (Sydney)", "Australia/Sydney" }, 2368b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2369b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 2370b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 2371b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" }, 2372b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "V", "AEDT", "+11:00" }, 2373b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "Australian Eastern Daylight Time", "+11:00" }, 2374b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 2375b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 2376b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" }, 2377b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "V", "AEST", "+10:00" }, 2378b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "Australian Eastern Standard Time", "+10:00" }, 2379b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "Australia Time (Sydney)", "Australia/Sydney" }, 2380b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "Eastern Australia Time", "Australia/Sydney" }, 2381b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", "Australia/Sydney", "2004-07-15T00:00:00Z", "VVVV", "Australia Time (Sydney)", "Australia/Sydney" }, 2382b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2383b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 2384b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT", "+0:00" }, 2385b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT", "+0:00" }, 2386b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-01-15T00:00:00Z", "V", "GMT", "+0:00" }, 2387b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "Greenwich Mean Time", "+0:00" }, 2388b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 2389b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" }, 2390b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+01:00", "Europe/London" }, 2391b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "V", "BST", "Europe/London" }, 2392b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "British Summer Time", "Europe/London" }, 2393b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu en.txt has exemplar city for this time zone 2394b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "v", "United Kingdom Time", "Europe/London" }, 2395b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "United Kingdom Time", "Europe/London" }, 2396b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Europe/London", "2004-07-15T00:00:00Z", "VVVV", "United Kingdom Time", "Europe/London" }, 2397b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2398b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2399b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2400b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2401b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2402b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2403b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2404b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2405b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2406b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-03:00", "-3:00" }, 2407b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00" }, 2408b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2409b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // JB#5150 2410b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 2411b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 2412b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+05:30", "+5:30" }, 2413b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "V", "GMT+05:30", "+5:30" }, 2414b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "India Standard Time", "+5:30" }, 2415b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 2416b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 2417b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+05:30", "+05:30" }, 2418b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "V", "GMT+05:30", "+05:30" }, 2419b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "India Standard Time", "+5:30" }, 2420b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "India Time", "Asia/Calcutta" }, 2421b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "en", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "India Standard Time", "Asia/Calcutta" }, 242250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 2423b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // ========== 2424b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2425b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 2426b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00", "-8:00" }, 2427b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-08:00", "-8:00" }, 2428b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "Nordamerikanische Westk\\u00fcsten-Winterzeit", "-8:00" }, 2429b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 2430b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" }, 2431b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-07:00", "-7:00" }, 2432b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "Nordamerikanische Westk\\u00fcsten-Sommerzeit", "-7:00" }, 2433b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "Vereinigte Staaten Zeit (Los Angeles)", "America/Los_Angeles" }, 2434b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "Nordamerikanische Westk\\u00fcstenzeit", "America/Los_Angeles" }, 2435b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2436b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2437b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2438b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2439b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "Argentinische Winterzeit", "-3:00" }, 2440b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2441b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2442b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2443b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "Argentinische Winterzeit", "-3:00" }, 2444b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Argentinien Zeit (Buenos Aires)", "America/Buenos_Aires" }, 2445b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Argentinische Winterzeit", "America/Buenos_Aires" }, 2446b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2447b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2448b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2449b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2450b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "Argentinische Winterzeit", "-3:00" }, 2451b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2452b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2453b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2454b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "Argentinische Winterzeit", "-3:00" }, 2455b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "Argentinien Zeit (Buenos Aires)", "America/Buenos_Aires" }, 2456b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "Argentinische Winterzeit", "America/Buenos_Aires" }, 2457b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2458b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 2459b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "-5:00" }, 2460b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-05:00", "-5:00" }, 2461b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-05:00", "-5:00" }, 2462b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 2463b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "-4:00" }, 2464b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-04:00", "-4:00" }, 2465b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-04:00", "-4:00" }, 2466b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "America/Havana", "2004-07-15T00:00:00Z", "v", "Kuba Zeit", "America/Havana" }, 2467b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "Kuba Zeit", "America/Havana" }, 2468b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // added to test proper fallback of country name 2469b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de_CH", "America/Havana", "2004-07-15T00:00:00Z", "v", "Kuba Zeit", "America/Havana" }, 2470b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de_CH", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "Kuba Zeit", "America/Havana" }, 2471b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2472b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 2473b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 2474b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" }, 2475b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "Ostaustralische Sommerzeit", "+11:00" }, 2476b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 2477b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 2478b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" }, 2479b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "Ostaustralische Winterzeit", "+10:00" }, 2480b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "Australien Zeit (Sydney)", "Australia/Sydney" }, 2481b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "Ostaustralische Zeit", "Australia/Sydney" }, 2482b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2483b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 2484b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 2485b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" }, 2486b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "Ostaustralische Sommerzeit", "+11:00" }, 2487b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 2488b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 2489b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" }, 2490b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "Ostaustralische Winterzeit", "+10:00" }, 2491b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "Australien Zeit (Sydney)", "Australia/Sydney" }, 2492b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "Ostaustralische Zeit", "Australia/Sydney" }, 2493b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2494b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 2495b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT", "+0:00" }, 2496b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT", "+0:00" }, 2497b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "Mittlere Greenwich-Zeit", "+0:00" }, 2498b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 2499b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" }, 2500b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+01:00", "+1:00" }, 2501b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+01:00", "+1:00" }, 2502b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Europe/London", "2004-07-15T00:00:00Z", "v", "Vereinigtes K\\u00f6nigreich Zeit", "Europe/London" }, 2503b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "Vereinigtes K\\u00f6nigreich Zeit", "Europe/London" }, 2504b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2505b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2506b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2507b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2508b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2509b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2510b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2511b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2512b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2513b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-03:00", "-3:00" }, 2514b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00" }, 2515b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2516b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // JB#5150 2517b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 2518b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 2519b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+05:30", "+5:30" }, 2520b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "Indische Zeit", "+5:30" }, 2521b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 2522b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 2523b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+05:30", "+05:30" }, 2524b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "Indische Zeit", "+5:30" }, 2525b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "Indien Zeit", "Asia/Calcutta" }, 2526b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "de", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "Indische Zeit", "Asia/Calcutta" }, 2527b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2528b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // ========== 2529b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2530b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 253185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0800", "-8:00" }, 253285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0800", "America/Los_Angeles" }, 2533b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "\\u592a\\u5e73\\u6d0b\\u6807\\u51c6\\u65f6\\u95f4", "America/Los_Angeles" }, 2534b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 253585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0700", "-7:00" }, 253685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0700", "America/Los_Angeles" }, 2537b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "\\u592a\\u5e73\\u6d0b\\u590f\\u4ee4\\u65f6\\u95f4", "America/Los_Angeles" }, 2538b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu zh.txt has exemplar city for this time zone 2539b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "\\u7f8e\\u56fd\\u65F6\\u95F4\\uff08\\u6d1b\\u6749\\u77f6\\uff09", "America/Los_Angeles" }, 254085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\\u7f8e\\u56fd\\u592a\\u5e73\\u6d0b\\u65f6\\u95f4", "America/Los_Angeles" }, 2541b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2542b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 254385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 254485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 254585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u963f\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "-3:00" }, 2546b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 254785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 254885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 254985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u963f\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "-3:00" }, 2550b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u963f\\u6839\\u5ef7\\u65F6\\u95F4\\uff08\\u5e03\\u5b9c\\u8bfa\\u65af\\u827e\\u5229\\u65af\\uff09", "America/Buenos_Aires" }, 255185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u963f\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "America/Buenos_Aires" }, 2552b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2553b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 255485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 255585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 255685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u963f\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "-3:00" }, 2557b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 255885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 255985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 256085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u963f\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "-3:00" }, 2561b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u963f\\u6839\\u5ef7\\u65F6\\u95F4\\uff08\\u5e03\\u5b9c\\u8bfa\\u65af\\u827e\\u5229\\u65af\\uff09", "America/Buenos_Aires" }, 256285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u963f\\u6839\\u5ef7\\u6807\\u51c6\\u65f6\\u95f4", "America/Buenos_Aires" }, 2563b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2564b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 256585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0500", "-5:00" }, 256685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0500", "-5:00" }, 256785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "\\u53e4\\u5df4\\u6807\\u51c6\\u65f6\\u95f4", "-5:00" }, 2568b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 256985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0400", "-4:00" }, 257085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0400", "-4:00" }, 257185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "\\u53e4\\u5df4\\u590f\\u4ee4\\u65f6\\u95f4", "-4:00" }, 257285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-07-15T00:00:00Z", "v", "\\u53e4\\u5df4\\u65f6\\u95f4", "America/Havana" }, 257385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\\u53e4\\u5df4\\u65f6\\u95f4", "America/Havana" }, 2574b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2575b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 257685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1100", "+11:00" }, 257785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1100", "+11:00" }, 2578b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "\\u6fb3\\u5927\\u5229\\u4e9a\\u4e1c\\u90e8\\u590f\\u4ee4\\u65f6\\u95f4", "+11:00" }, 2579b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 258085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1000", "+10:00" }, 258185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1000", "+10:00" }, 258285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "\\u6fb3\\u5927\\u5229\\u4e9a\\u4e1c\\u90e8\\u6807\\u51c6\\u65f6\\u95f4", "+10:00" }, 2583b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu zh.txt does not have info for this time zone 2584b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\\u6fb3\\u5927\\u5229\\u4e9a\\u65F6\\u95F4\\uff08\\u6089\\u5c3c\\uff09", "Australia/Sydney" }, 258585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\\u6fb3\\u5927\\u5229\\u4e9a\\u4e1c\\u90e8\\u65f6\\u95f4", "Australia/Sydney" }, 2586b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2587b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 258885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1100", "+11:00" }, 258985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1100", "+11:00" }, 2590b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "\\u6fb3\\u5927\\u5229\\u4e9a\\u4e1c\\u90e8\\u590f\\u4ee4\\u65f6\\u95f4", "+11:00" }, 2591b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 259285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1000", "+10:00" }, 259385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+1000", "+10:00" }, 259485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "\\u6fb3\\u5927\\u5229\\u4e9a\\u4e1c\\u90e8\\u6807\\u51c6\\u65f6\\u95f4", "+10:00" }, 2595b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\\u6fb3\\u5927\\u5229\\u4e9a\\u65F6\\u95F4\\uff08\\u6089\\u5c3c\\uff09", "Australia/Sydney" }, 259685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\\u6fb3\\u5927\\u5229\\u4e9a\\u4e1c\\u90e8\\u65f6\\u95f4", "Australia/Sydney" }, 2597b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2598b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 2599b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "zh", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4", "+0:00" }, 2600b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "zh", "Europe/London", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4", "+0:00" }, 2601b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "zh", "Europe/London", "2004-01-15T00:00:00Z", "V", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4", "+0:00" }, 2602b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "zh", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4", "+0:00" }, 2603b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "zh", "Europe/London", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4", "+0:00" }, 2604b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "zh", "Europe/London", "2004-01-15T00:00:00Z", "V", "\\u683C\\u6797\\u5C3C\\u6CBB\\u6807\\u51C6\\u65F6\\u95F4", "+0:00" }, 2605b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "\\u683C\\u6797\\u5C3C\\u6CBB\\u6807\\u51C6\\u65F6\\u95F4", "+0:00" }, 2606b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 260785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0100", "+1:00" }, 260885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Europe/London", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0100", "+1:00" }, 2609b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "zh", "Europe/London", "2004-07-15T00:00:00Z", "V", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0100", "+1:00" }, 261085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0100", "+1:00" }, 261185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Europe/London", "2004-07-15T00:00:00Z", "v", "\\u82f1\\u56fd\\u65f6\\u95f4", "Europe/London" }, 261285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\\u82f1\\u56fd\\u65f6\\u95f4", "Europe/London" }, 261385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Europe/London", "2004-07-15T00:00:00Z", "VVVV", "\\u82f1\\u56fd\\u65f6\\u95f4", "Europe/London" }, 2614b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2615b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 261685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 261785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 261885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 2619b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 262085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 262185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 262285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 262385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 262485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4-0300", "-3:00" }, 2625b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2626b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // JB#5150 2627b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 262885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0530", "+5:30" }, 262985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0530", "+5:30" }, 263085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "\\u5370\\u5ea6\\u6807\\u51c6\\u65f6\\u95f4", "+5:30" }, 2631b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 263285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0530", "+5:30" }, 263385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "\\u683c\\u6797\\u5c3c\\u6cbb\\u6807\\u51c6\\u65f6\\u95f4+0530", "+05:30" }, 263485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "\\u5370\\u5ea6\\u6807\\u51c6\\u65f6\\u95f4", "+5:30" }, 263585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "\\u5370\\u5ea6\\u65f6\\u95f4", "Asia/Calcutta" }, 263685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "zh", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\\u5370\\u5ea6\\u6807\\u51c6\\u65f6\\u95f4", "Asia/Calcutta" }, 2637b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2638b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // ========== 2639b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2640b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 2641b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u096e:\\u0966\\u0966", "-8:00" }, 2642b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-\\u0966\\u096e:\\u0966\\u0966", "-8:00" }, 2643b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "\\u092a\\u094d\\u0930\\u0936\\u093e\\u0902\\u0924\\u0020\\u092e\\u093e\\u0928\\u0915\\u0020\\u0938\\u092e\\u092f", "-8:00" }, 2644b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 2645b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u096d:\\u0966\\u0966", "-7:00" }, 2646b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-\\u0966\\u096d:\\u0966\\u0966", "-7:00" }, 2647b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "\\u092A\\u094D\\u0930\\u0936\\u093E\\u0902\\u0924 \\u0926\\u093F\\u0935\\u093E\\u0935\\u0932\\u094B\\u0915 \\u0938\\u092E\\u092F", "-7:00" }, 2648b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "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 \\u0938\\u092E\\u092F (\\u0932\\u094b\\u0938 \\u090f\\u0902\\u091c\\u093f\\u0932\\u0947\\u0938)", "America/Los_Angeles" }, 2649b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\\u092A\\u094D\\u0930\\u0936\\u093E\\u0902\\u0924 \\u0938\\u092E\\u092F", "America/Los_Angeles" }, 2650b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2651b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2652b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2653b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2654b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u0905\\u0930\\u094D\\u091C\\u0947\\u0902\\u091F\\u0940\\u0928\\u093E \\u0938\\u092E\\u092F", "-3:00" }, 2655b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2656b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2657b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2658b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u0905\\u0930\\u094D\\u091C\\u0947\\u0902\\u091F\\u0940\\u0928\\u093E \\u0938\\u092E\\u092F", "-3:00" }, 2659b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u0905\\u0930\\u094d\\u091c\\u0947\\u0928\\u094d\\u091f\\u0940\\u0928\\u093e \\u0938\\u092E\\u092F (\\u092c\\u094d\\u092f\\u0942\\u0928\\u0938 \\u0906\\u092f\\u0930\\u0938)", "America/Buenos_Aires" }, 2660b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u0905\\u0930\\u094D\\u091C\\u0947\\u0902\\u091F\\u0940\\u0928\\u093E \\u0938\\u092E\\u092F", "America/Buenos_Aires" }, 2661b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2662b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2663b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2664b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2665b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u0905\\u0930\\u094D\\u091C\\u0947\\u0902\\u091F\\u0940\\u0928\\u093E \\u0938\\u092E\\u092F", "-3:00" }, 2666b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2667b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2668b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2669b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u0905\\u0930\\u094D\\u091C\\u0947\\u0902\\u091F\\u0940\\u0928\\u093E \\u0938\\u092E\\u092F", "-3:00" }, 2670b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u0905\\u0930\\u094d\\u091c\\u0947\\u0928\\u094d\\u091f\\u0940\\u0928\\u093e \\u0938\\u092E\\u092F (\\u092c\\u094d\\u092f\\u0942\\u0928\\u0938 \\u0906\\u092f\\u0930\\u0938)", "America/Buenos_Aires" }, 2671b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u0905\\u0930\\u094D\\u091C\\u0947\\u0902\\u091F\\u0940\\u0928\\u093E \\u0938\\u092E\\u092F", "America/Buenos_Aires" }, 2672b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2673b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 2674b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u096b:\\u0966\\u0966", "-5:00" }, 2675b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-\\u0966\\u096b:\\u0966\\u0966", "-5:00" }, 2676b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-\\u0966\\u096b:\\u0966\\u0966", "-5:00" }, 2677b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 2678b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u096a:\\u0966\\u0966", "-4:00" }, 2679b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-\\u0966\\u096a:\\u0966\\u0966", "-4:00" }, 2680b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-\\u0966\\u096a:\\u0966\\u0966", "-4:00" }, 2681b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "America/Havana", "2004-07-15T00:00:00Z", "v", "\\u0915\\u094d\\u092f\\u0942\\u092c\\u093e \\u0938\\u092E\\u092F", "America/Havana" }, 2682b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\\u0915\\u094d\\u092f\\u0942\\u092c\\u093e \\u0938\\u092E\\u092F", "America/Havana" }, 2683b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2684b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 2685b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+\\u0967\\u0967:\\u0966\\u0966", "+11:00" }, 2686b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+\\u0967\\u0967:\\u0966\\u0966", "+11:00" }, 2687b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "\\u0911\\u0938\\u094D\\u200D\\u091F\\u094D\\u0930\\u0947\\u0932\\u093F\\u092F\\u093E\\u0908 \\u092A\\u0942\\u0930\\u094D\\u0935\\u0940 \\u0926\\u093F\\u0935\\u093E\\u0935\\u0932\\u094B\\u0915 \\u0938\\u092E\\u092F", "+11:00" }, 2688b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 2689b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+\\u0967\\u0966:\\u0966\\u0966", "+10:00" }, 2690b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+\\u0967\\u0966:\\u0966\\u0966", "+10:00" }, 2691b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "\\u0911\\u0938\\u094D\\u200D\\u091F\\u094D\\u0930\\u0947\\u0932\\u093F\\u092F\\u093E\\u0908 \\u092A\\u0942\\u0930\\u094D\\u0935\\u0940 \\u092E\\u093E\\u0928\\u0915 \\u0938\\u092E\\u092F", "+10:00" }, 2692b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\\u0911\\u0938\\u094d\\u091f\\u094d\\u0930\\u0947\\u0932\\u093f\\u092f\\u093e \\u0938\\u092E\\u092F (\\u0938\\u093f\\u0921\\u0928\\u0940)", "Australia/Sydney" }, 2693b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\\u092A\\u0942\\u0930\\u094D\\u0935\\u0940 \\u0911\\u0938\\u094D\\u091F\\u094D\\u0930\\u0947\\u0932\\u093F\\u092F\\u093E\\u0908 \\u0938\\u092E\\u092F", "Australia/Sydney" }, 2694b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2695b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 2696b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+\\u0967\\u0967:\\u0966\\u0966", "+11:00" }, 2697b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+\\u0967\\u0967:\\u0966\\u0966", "+11:00" }, 2698b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "\\u0911\\u0938\\u094D\\u200D\\u091F\\u094D\\u0930\\u0947\\u0932\\u093F\\u092F\\u093E\\u0908 \\u092A\\u0942\\u0930\\u094D\\u0935\\u0940 \\u0926\\u093F\\u0935\\u093E\\u0935\\u0932\\u094B\\u0915 \\u0938\\u092E\\u092F", "+11:00" }, 2699b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 2700b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+\\u0967\\u0966:\\u0966\\u0966", "+10:00" }, 2701b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+\\u0967\\u0966:\\u0966\\u0966", "+10:00" }, 2702b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "\\u0911\\u0938\\u094D\\u200D\\u091F\\u094D\\u0930\\u0947\\u0932\\u093F\\u092F\\u093E\\u0908 \\u092A\\u0942\\u0930\\u094D\\u0935\\u0940 \\u092E\\u093E\\u0928\\u0915 \\u0938\\u092E\\u092F", "+10:00" }, 2703b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\\u0911\\u0938\\u094d\\u091f\\u094d\\u0930\\u0947\\u0932\\u093f\\u092f\\u093e \\u0938\\u092E\\u092F (\\u0938\\u093f\\u0921\\u0928\\u0940)", "Australia/Sydney" }, 2704b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\\u092A\\u0942\\u0930\\u094D\\u0935\\u0940 \\u0911\\u0938\\u094D\\u091F\\u094D\\u0930\\u0947\\u0932\\u093F\\u092F\\u093E\\u0908 \\u0938\\u092E\\u092F", "Australia/Sydney" }, 2705b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2706b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 2707b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT", "+0:00" }, 2708b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT", "+0:00" }, 2709b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "GMT", "+0:00" }, 2710b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 2711b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+\\u0966\\u0967:\\u0966\\u0966", "+1:00" }, 2712b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+\\u0966\\u0967:\\u0966\\u0966", "+1:00" }, 2713b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+\\u0966\\u0967:\\u0966\\u0966", "+1:00" }, 2714b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "Europe/London", "2004-07-15T00:00:00Z", "v", "\\u092C\\u094D\\u0930\\u093F\\u0924\\u0928 \\u0938\\u092E\\u092F", "Europe/London" }, 2715b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "hi", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\\u092C\\u094D\\u0930\\u093F\\u0924\\u0928 \\u0938\\u092E\\u092F", "Europe/London" }, 2716b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2717b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2718b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2719b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2720b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2721b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2722b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2723b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2724b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2725b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2726b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-\\u0966\\u0969:\\u0966\\u0966", "-3:00" }, 2727b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2728b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 2729b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+\\u0966\\u096B:\\u0969\\u0966", "+5:30" }, 2730b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "IST", "+5:30" }, 2731b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "\\u092D\\u093E\\u0930\\u0924\\u0940\\u092F \\u0938\\u092E\\u092F", "+5:30" }, 2732b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 2733b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+\\u0966\\u096B:\\u0969\\u0966", "+5:30" }, 2734b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "IST", "+05:30" }, 2735b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "\\u092D\\u093E\\u0930\\u0924\\u0940\\u092F \\u0938\\u092E\\u092F", "+5:30" }, 2736b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "IST", "Asia/Calcutta" }, 2737b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "hi", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\\u092D\\u093E\\u0930\\u0924\\u0940\\u092F \\u0938\\u092E\\u092F", "Asia/Calcutta" }, 2738b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2739b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // ========== 2740b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2741b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 274285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0800", "-8:00" }, 274385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0800", "America/Los_Angeles" }, 2744b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Los_Angeles", "2004-01-15T00:00:00Z", "V", "PST", "America/Los_Angeles" }, 2745b13da9df870a61b11249bf741347908dbea0edd8Jean-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" }, 2746b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 274785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0700", "-7:00" }, 274885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0700", "America/Los_Angeles" }, 2749b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "V", "PDT", "America/Los_Angeles" }, 2750b13da9df870a61b11249bf741347908dbea0edd8Jean-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" }, 2751b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu bg.txt has exemplar city for this time zone 2752b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "\\u0421\\u0410\\u0429 \\u0432\\u0440\\u0435\\u043C\\u0435 (\\u041b\\u043e\\u0441 \\u0410\\u043d\\u0436\\u0435\\u043b\\u0438\\u0441)", "America/Los_Angeles" }, 2753b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\\u0422\\u0438\\u0445\\u043E\\u043E\\u043A\\u0435\\u0430\\u043D\\u0441\\u043A\\u043E \\u0432\\u0440\\u0435\\u043C\\u0435", "America/Los_Angeles" }, 2754b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "America/Los_Angeles", "2004-07-15T00:00:00Z", "VVVV", "\\u0421\\u0410\\u0429 \\u0432\\u0440\\u0435\\u043C\\u0435 (\\u041b\\u043e\\u0441 \\u0410\\u043d\\u0436\\u0435\\u043b\\u0438\\u0441)", "America/Los_Angeles" }, 2755b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2756b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 275785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 275885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 2759b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u0410\\u0440\\u0436\\u0435\\u043D\\u0442\\u0438\\u043D\\u0430", "-3:00" }, 2760b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 276185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 276285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 2763b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u0410\\u0440\\u0436\\u0435\\u043D\\u0442\\u0438\\u043D\\u0430", "-3:00" }, 2764b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u0410\\u0440\\u0436\\u0435\\u043d\\u0442\\u0438\\u043d\\u0430 \\u0432\\u0440\\u0435\\u043C\\u0435 (\\u0411\\u0443\\u0435\\u043D\\u043E\\u0441 \\u0410\\u0439\\u0440\\u0435\\u0441)", "America/Buenos_Aires" }, 2765b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u0410\\u0440\\u0436\\u0435\\u043D\\u0442\\u0438\\u043D\\u0430", "America/Buenos_Aires" }, 2766b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2767b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 276885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 276985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 2770b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u0410\\u0440\\u0436\\u0435\\u043D\\u0442\\u0438\\u043D\\u0430", "-3:00" }, 2771b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 277285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 277385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 2774b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u0410\\u0440\\u0436\\u0435\\u043D\\u0442\\u0438\\u043D\\u0430", "-3:00" }, 2775b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu bg.txt does not have info for this time zone 2776b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u0410\\u0440\\u0436\\u0435\\u043d\\u0442\\u0438\\u043d\\u0430 \\u0432\\u0440\\u0435\\u043C\\u0435 (\\u0411\\u0443\\u0435\\u043D\\u043E\\u0441 \\u0410\\u0439\\u0440\\u0435\\u0441)", "America/Buenos_Aires" }, 2777b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u0410\\u0440\\u0436\\u0435\\u043D\\u0442\\u0438\\u043D\\u0430", "America/Buenos_Aires" }, 2778b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2779b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 278085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0500", "-5:00" }, 278185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Havana", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0500", "-5:00" }, 278285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0500", "-5:00" }, 2783b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 278485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0400", "-4:00" }, 278585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Havana", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0400", "-4:00" }, 278685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0400", "-4:00" }, 2787b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "America/Havana", "2004-07-15T00:00:00Z", "v", "\\u041a\\u0443\\u0431\\u0430 \\u0432\\u0440\\u0435\\u043C\\u0435", "America/Havana" }, 2788b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\\u041a\\u0443\\u0431\\u0430 \\u0432\\u0440\\u0435\\u043C\\u0435", "America/Havana" }, 2789b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2790b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 279185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1100", "+11:00" }, 279285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1100", "+11:00" }, 2793b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "\\u0410\\u0432\\u0441\\u0442\\u0440\\u0430\\u043B\\u0438\\u044F \\u2013 \\u0438\\u0437\\u0442\\u043E\\u0447\\u043D\\u043E \\u043B\\u044F\\u0442\\u043D\\u043E \\u0447\\u0430\\u0441\\u043E\\u0432\\u043E \\u0432\\u0440\\u0435\\u043C\\u0435", "+11:00" }, 2794b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 279585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1000", "+10:00" }, 279685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1000", "+10:00" }, 2797b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "\\u0410\\u0432\\u0441\\u0442\\u0440\\u0430\\u043B\\u0438\\u044F \\u2013 \\u0438\\u0437\\u0442\\u043E\\u0447\\u043D\\u043E \\u0441\\u0442\\u0430\\u043D\\u0434\\u0430\\u0440\\u0442\\u043D\\u043E \\u0432\\u0440\\u0435\\u043C\\u0435", "+10:00" }, 2798b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\\u0410\\u0432\\u0441\\u0442\\u0440\\u0430\\u043b\\u0438\\u044f \\u0432\\u0440\\u0435\\u043C\\u0435 (\\u0421\\u0438\\u0434\\u043D\\u0438)", "Australia/Sydney" }, 2799b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\\u0410\\u0432\\u0441\\u0442\\u0440\\u0430\\u043B\\u0438\\u044F \\u2013 \\u0438\\u0437\\u0442\\u043E\\u0447\\u043D\\u043E \\u0432\\u0440\\u0435\\u043C\\u0435", "Australia/Sydney" }, 2800b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2801b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 280285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1100", "+11:00" }, 280385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1100", "+11:00" }, 2804b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "\\u0410\\u0432\\u0441\\u0442\\u0440\\u0430\\u043B\\u0438\\u044F \\u2013 \\u0438\\u0437\\u0442\\u043E\\u0447\\u043D\\u043E \\u043B\\u044F\\u0442\\u043D\\u043E \\u0447\\u0430\\u0441\\u043E\\u0432\\u043E \\u0432\\u0440\\u0435\\u043C\\u0435", "+11:00" }, 2805b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 280685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1000", "+10:00" }, 280785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+1000", "+10:00" }, 2808b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "\\u0410\\u0432\\u0441\\u0442\\u0440\\u0430\\u043B\\u0438\\u044F \\u2013 \\u0438\\u0437\\u0442\\u043E\\u0447\\u043D\\u043E \\u0441\\u0442\\u0430\\u043D\\u0434\\u0430\\u0440\\u0442\\u043D\\u043E \\u0432\\u0440\\u0435\\u043C\\u0435", "+10:00" }, 2809b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\\u0410\\u0432\\u0441\\u0442\\u0440\\u0430\\u043b\\u0438\\u044f \\u0432\\u0440\\u0435\\u043C\\u0435 (\\u0421\\u0438\\u0434\\u043D\\u0438)", "Australia/Sydney" }, 2810b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\\u0410\\u0432\\u0441\\u0442\\u0440\\u0430\\u043B\\u0438\\u044F \\u2013 \\u0438\\u0437\\u0442\\u043E\\u0447\\u043D\\u043E \\u0432\\u0440\\u0435\\u043C\\u0435", "Australia/Sydney" }, 2811b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2812b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 2813b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447", "+0:00" }, 2814b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "Europe/London", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447", "+0:00" }, 2815b13da9df870a61b11249bf741347908dbea0edd8Jean-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" }, 2816b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 281785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0100", "+1:00" }, 281885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Europe/London", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0100", "+1:00" }, 281985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0100", "+1:00" }, 2820b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "Europe/London", "2004-07-15T00:00:00Z", "v", "\\u041e\\u0431\\u0435\\u0434\\u0438\\u043d\\u0435\\u043d\\u043e \\u043a\\u0440\\u0430\\u043b\\u0441\\u0442\\u0432\\u043e \\u0432\\u0440\\u0435\\u043C\\u0435", "Europe/London" }, 2821b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\\u041e\\u0431\\u0435\\u0434\\u0438\\u043d\\u0435\\u043d\\u043e \\u043a\\u0440\\u0430\\u043b\\u0441\\u0442\\u0432\\u043e \\u0432\\u0440\\u0435\\u043C\\u0435", "Europe/London" }, 2822b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2823b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 282485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 282585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 282685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 2827b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 282885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 282985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 283085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 283185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 283285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447-0300", "-3:00" }, 2833b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2834b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // JB#5150 2835b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 283685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0530", "+5:30" }, 283785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0530", "+5:30" }, 283885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0530", "+5:30" }, 2839b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 284085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0530", "+5:30" }, 284185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0530", "+05:30" }, 284285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "\\u0413\\u0440\\u0438\\u0438\\u043D\\u0443\\u0438\\u0447+0530", "+5:30" }, 2843b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "\\u0418\\u043D\\u0434\\u0438\\u044F \\u0432\\u0440\\u0435\\u043C\\u0435", "Asia/Calcutta" }, 2844b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "bg", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\\u0418\\u043D\\u0434\\u0438\\u044F \\u0432\\u0440\\u0435\\u043C\\u0435", "Asia/Calcutta" }, 2845b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // ========== 2846b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2847b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 284885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00", "-8:00" }, 284985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-08:00", "America/Los_Angeles" }, 2850b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "V", "PST", "America/Los_Angeles" }, 285185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "\\u30a2\\u30e1\\u30ea\\u30ab\\u592a\\u5e73\\u6d0b\\u6a19\\u6e96\\u6642", "America/Los_Angeles" }, 285285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-700" }, 285385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" }, 285485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-07:00", "America/Los_Angeles" }, 2855b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "V", "PDT", "America/Los_Angeles" }, 285685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "\\u30a2\\u30e1\\u30ea\\u30ab\\u592a\\u5e73\\u6d0b\\u590f\\u6642\\u9593", "America/Los_Angeles" }, 2857b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu ja.txt has exemplar city for this time zone 2858b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "\\u30A2\\u30E1\\u30EA\\u30AB\\u5408\\u8846\\u56FD\\u6642\\u9593\\uFF08\\u30ed\\u30b5\\u30f3\\u30bc\\u30eb\\u30b9\\uFF09", "America/Los_Angeles" }, 285985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "\\u30A2\\u30E1\\u30EA\\u30AB\\u592A\\u5e73\\u6D0B\\u6642\\u9593", "America/Los_Angeles" }, 2860b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "America/Los_Angeles", "2004-07-15T00:00:00Z", "VVVV", "\\u30A2\\u30E1\\u30EA\\u30AB\\u5408\\u8846\\u56FD\\u6642\\u9593\\uFF08\\u30ed\\u30b5\\u30f3\\u30bc\\u30eb\\u30b9\\uFF09", "America/Los_Angeles" }, 2861b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2862b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 286385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 286485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2865b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u30A2\\u30EB\\u30BC\\u30F3\\u30C1\\u30F3\\u6A19\\u6E96\\u6642", "-3:00" }, 2866b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 286785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 286885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2869b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u30A2\\u30EB\\u30BC\\u30F3\\u30C1\\u30F3\\u6A19\\u6E96\\u6642", "-3:00" }, 2870b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu ja.txt does not have info for this time zone 2871b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u30a2\\u30eb\\u30bc\\u30f3\\u30c1\\u30f3\\u6642\\u9593\\uFF08\\u30D6\\u30A8\\u30CE\\u30B9\\u30A2\\u30A4\\u30EC\\u30B9\\uFF09", "America/Buenos_Aires" }, 2872b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u30A2\\u30EB\\u30BC\\u30F3\\u30C1\\u30F3\\u6A19\\u6E96\\u6642", "America/Buenos_Aires" }, 2873b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2874b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 287585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 287685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2877b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "\\u30A2\\u30EB\\u30BC\\u30F3\\u30C1\\u30F3\\u6A19\\u6E96\\u6642", "-3:00" }, 2878b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 287985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 288085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2881b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "\\u30A2\\u30EB\\u30BC\\u30F3\\u30C1\\u30F3\\u6A19\\u6E96\\u6642", "-3:00" }, 2882b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "\\u30a2\\u30eb\\u30bc\\u30f3\\u30c1\\u30f3\\u6642\\u9593\\uFF08\\u30D6\\u30A8\\u30CE\\u30B9\\u30A2\\u30A4\\u30EC\\u30B9\\uFF09", "America/Buenos_Aires" }, 2883b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "\\u30A2\\u30EB\\u30BC\\u30F3\\u30C1\\u30F3\\u6A19\\u6E96\\u6642", "America/Buenos_Aires" }, 2884b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2885b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 288685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "-5:00" }, 288785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-05:00", "-5:00" }, 2888b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "\\u30AD\\u30E5\\u30FC\\u30D0\\u6A19\\u6E96\\u6642", "-5:00" }, 2889b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 289085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "-4:00" }, 289185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-04:00", "-4:00" }, 2892b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "\\u30AD\\u30E5\\u30FC\\u30D0\\u590F\\u6642\\u9593", "-4:00" }, 2893b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Havana", "2004-07-15T00:00:00Z", "v", "\\u30ad\\u30e5\\u30fc\\u30d0\\u6642\\u9593", "America/Havana" }, 2894b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "\\u30ad\\u30e5\\u30fc\\u30d0\\u6642\\u9593", "America/Havana" }, 2895b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2896b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 289785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 289885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" }, 2899b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "\\u30AA\\u30FC\\u30B9\\u30C8\\u30E9\\u30EA\\u30A2\\u6771\\u90E8\\u590F\\u6642\\u9593", "+11:00" }, 2900b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 290185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 290285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" }, 2903b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "\\u30AA\\u30FC\\u30B9\\u30C8\\u30E9\\u30EA\\u30A2\\u6771\\u90E8\\u6A19\\u6E96\\u6642", "+10:00" }, 2904b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // icu ja.txt does not have info for this time zone 2905b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "\\u30aa\\u30fc\\u30b9\\u30c8\\u30e9\\u30ea\\u30a2\\u6642\\u9593\\uFF08\\u30b7\\u30c9\\u30cb\\u30fc\\uFF09", "Australia/Sydney" }, 2906b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "\\u30AA\\u30FC\\u30B9\\u30C8\\u30E9\\u30EA\\u30A2\\u6771\\u90E8\\u6642\\u9593", "Australia/Sydney" }, 2907b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2908b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 290985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 291085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" }, 2911b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "\\u30AA\\u30FC\\u30B9\\u30C8\\u30E9\\u30EA\\u30A2\\u6771\\u90E8\\u590F\\u6642\\u9593", "+11:00" }, 2912b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 291385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 291485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" }, 2915b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "\\u30AA\\u30FC\\u30B9\\u30C8\\u30E9\\u30EA\\u30A2\\u6771\\u90E8\\u6A19\\u6E96\\u6642", "+10:00" }, 2916b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "\\u30aa\\u30fc\\u30b9\\u30c8\\u30e9\\u30ea\\u30a2\\u6642\\u9593\\uFF08\\u30b7\\u30c9\\u30cb\\u30fc\\uFF09", "Australia/Sydney" }, 2917b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "\\u30AA\\u30FC\\u30B9\\u30C8\\u30E9\\u30EA\\u30A2\\u6771\\u90E8\\u6642\\u9593", "Australia/Sydney" }, 2918b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2919b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 2920b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT", "+0:00" }, 2921b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT", "+0:00" }, 2922b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Europe/London", "2004-01-15T00:00:00Z", "V", "GMT", "+0:00" }, 2923b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "\\u30B0\\u30EA\\u30CB\\u30C3\\u30B8\\u6A19\\u6E96\\u6642", "+0:00" }, 2924b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 292585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" }, 292685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+01:00", "+1:00" }, 292785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Europe/London", "2004-07-15T00:00:00Z", "V", "GMT+01:00", "+1:00" }, 292885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+01:00", "+1:00" }, 2929b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Europe/London", "2004-07-15T00:00:00Z", "v", "\\u30a4\\u30ae\\u30ea\\u30b9\\u6642\\u9593", "Europe/London" }, 2930b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "\\u30a4\\u30ae\\u30ea\\u30b9\\u6642\\u9593", "Europe/London" }, 2931b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Europe/London", "2004-07-15T00:00:00Z", "VVVV", "\\u30a4\\u30ae\\u30ea\\u30b9\\u6642\\u9593", "Europe/London" }, 2932b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2933b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 293485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 293585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 293685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2937b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 293885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 293985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 294085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 294185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-03:00", "-3:00" }, 294285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00" }, 2943b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2944b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // JB#5150 2945b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 294685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 294785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+05:30", "+5:30" }, 2948b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "\\u30A4\\u30F3\\u30C9\\u6A19\\u6E96\\u6642", "+5:30" }, 2949b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 295085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 295185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+05:30", "+05:30" }, 2952b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "\\u30A4\\u30F3\\u30C9\\u6A19\\u6E96\\u6642", "+5:30" }, 2953b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "\\u30A4\\u30F3\\u30C9\\u6642\\u9593", "Asia/Calcutta" }, 2954b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "\\u30A4\\u30F3\\u30C9\\u6A19\\u6E96\\u6642", "Asia/Calcutta" }, 2955b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2956b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // ========== 2957b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 2958b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Los_Angeles", "2004-01-15T00:00:00Z", "Z", "-0800", "-8:00" }, 2959b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Los_Angeles", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-08:00", "-8:00" }, 2960b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Los_Angeles", "2004-01-15T00:00:00Z", "z", "GMT-08:00", "-8:00" }, 2961b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Los_Angeles", "2004-01-15T00:00:00Z", "zzzz", "GMT-08:00", "-8:00" }, 2962b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "Z", "-0700", "-7:00" }, 2963b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-07:00", "-7:00" }, 2964b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "z", "GMT-07:00", "-7:00" }, 2965b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "zzzz", "GMT-07:00", "-7:00" }, 2966b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "v", "US (Los Angeles)", "America/Los_Angeles" }, 2967b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Los_Angeles", "2004-07-15T00:00:00Z", "vvvv", "US (Los Angeles)", "America/Los_Angeles" }, 2968b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 2969b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2970b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2971b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2972b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Argentina/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2973b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2974b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2975b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2976b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2977b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "AR (Buenos Aires)", "America/Buenos_Aires" }, 2978b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Argentina/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "AR (Buenos Aires)", "America/Buenos_Aires" }, 2979b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 2980b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2981b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2982b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2983b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Buenos_Aires", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2984b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 2985b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 2986b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 2987b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 2988b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "v", "AR (Buenos Aires)", "America/Buenos_Aires" }, 2989b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Buenos_Aires", "2004-07-15T00:00:00Z", "vvvv", "AR (Buenos Aires)", "America/Buenos_Aires" }, 2990b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 2991b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Havana", "2004-01-15T00:00:00Z", "Z", "-0500", "-5:00" }, 2992b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Havana", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-05:00", "-5:00" }, 2993b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Havana", "2004-01-15T00:00:00Z", "z", "GMT-05:00", "-5:00" }, 2994b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Havana", "2004-01-15T00:00:00Z", "zzzz", "GMT-05:00", "-5:00" }, 2995b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Havana", "2004-07-15T00:00:00Z", "Z", "-0400", "-4:00" }, 2996b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Havana", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-04:00", "-4:00" }, 2997b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Havana", "2004-07-15T00:00:00Z", "z", "GMT-04:00", "-4:00" }, 2998b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Havana", "2004-07-15T00:00:00Z", "zzzz", "GMT-04:00", "-4:00" }, 2999b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Havana", "2004-07-15T00:00:00Z", "v", "(CU)", "America/Havana" }, 3000b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "America/Havana", "2004-07-15T00:00:00Z", "vvvv", "(CU)", "America/Havana" }, 3001b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3002b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/ACT", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 3003b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/ACT", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 3004b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/ACT", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" }, 3005b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/ACT", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" }, 3006b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 3007b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 3008b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" }, 3009b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" }, 3010b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "v", "AU (Sydney)", "Australia/Sydney" }, 3011b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/ACT", "2004-07-15T00:00:00Z", "vvvv", "AU (Sydney)", "Australia/Sydney" }, 3012b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3013b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/Sydney", "2004-01-15T00:00:00Z", "Z", "+1100", "+11:00" }, 3014b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/Sydney", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+11:00", "+11:00" }, 3015b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/Sydney", "2004-01-15T00:00:00Z", "z", "GMT+11:00", "+11:00" }, 3016b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/Sydney", "2004-01-15T00:00:00Z", "zzzz", "GMT+11:00", "+11:00" }, 3017b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "Z", "+1000", "+10:00" }, 3018b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+10:00", "+10:00" }, 3019b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "z", "GMT+10:00", "+10:00" }, 3020b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "zzzz", "GMT+10:00", "+10:00" }, 3021b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "v", "AU (Sydney)", "Australia/Sydney" }, 3022b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Australia/Sydney", "2004-07-15T00:00:00Z", "vvvv", "AU (Sydney)", "Australia/Sydney" }, 3023b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3024b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Europe/London", "2004-01-15T00:00:00Z", "Z", "+0000", "+0:00" }, 3025b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Europe/London", "2004-01-15T00:00:00Z", "ZZZZ", "GMT", "+0:00" }, 3026b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Europe/London", "2004-01-15T00:00:00Z", "z", "GMT", "+0:00" }, 3027b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Europe/London", "2004-01-15T00:00:00Z", "zzzz", "GMT", "+0:00" }, 3028b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Europe/London", "2004-07-15T00:00:00Z", "Z", "+0100", "+1:00" }, 3029b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Europe/London", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+01:00", "+1:00" }, 3030b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Europe/London", "2004-07-15T00:00:00Z", "z", "GMT+01:00", "+1:00" }, 3031b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Europe/London", "2004-07-15T00:00:00Z", "zzzz", "GMT+01:00", "+1:00" }, 3032b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Europe/London", "2004-07-15T00:00:00Z", "v", "(GB)", "Europe/London" }, 3033b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Europe/London", "2004-07-15T00:00:00Z", "vvvv", "(GB)", "Europe/London" }, 3034b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3035b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Etc/GMT+3", "2004-01-15T00:00:00Z", "Z", "-0300", "-3:00" }, 3036b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Etc/GMT+3", "2004-01-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 3037b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Etc/GMT+3", "2004-01-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 3038b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Etc/GMT+3", "2004-01-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 3039b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Etc/GMT+3", "2004-07-15T00:00:00Z", "Z", "-0300", "-3:00" }, 3040b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Etc/GMT+3", "2004-07-15T00:00:00Z", "ZZZZ", "GMT-03:00", "-3:00" }, 3041b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Etc/GMT+3", "2004-07-15T00:00:00Z", "z", "GMT-03:00", "-3:00" }, 3042b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Etc/GMT+3", "2004-07-15T00:00:00Z", "zzzz", "GMT-03:00", "-3:00" }, 3043b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Etc/GMT+3", "2004-07-15T00:00:00Z", "v", "GMT-03:00", "-3:00" }, 3044b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Etc/GMT+3", "2004-07-15T00:00:00Z", "vvvv", "GMT-03:00", "-3:00" }, 3045b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3046b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // JB#5150 3047b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Asia/Calcutta", "2004-01-15T00:00:00Z", "Z", "+0530", "+5:30" }, 3048b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Asia/Calcutta", "2004-01-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 3049b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Asia/Calcutta", "2004-01-15T00:00:00Z", "z", "GMT+05:30", "+5:30" }, 3050b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Asia/Calcutta", "2004-01-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" }, 3051b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "Z", "+0530", "+5:30" }, 3052b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "ZZZZ", "GMT+05:30", "+5:30" }, 3053b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "z", "GMT+05:30", "+05:30" }, 3054b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "zzzz", "GMT+05:30", "+5:30" }, 3055b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "v", "(IN)", "Alna/Calcutta" }, 3056b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ti", "Asia/Calcutta", "2004-07-15T00:00:00Z", "vvvv", "(IN)", "Asia/Calcutta" }, 3057b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3058b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // Ticket#8589 Partial location name to use country name if the zone is the golden 3059b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // zone for the time zone's country. 3060b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en_MX", "America/Chicago", "1995-07-15T00:00:00Z", "vvvv", "Central Time (United States)", "America/Chicago"}, 3061b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 306285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho { NULL, NULL, NULL, NULL, NULL, NULL }, 3063b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 3064b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 306585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UErrorCode status = U_ZERO_ERROR; 306685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Calendar *cal = GregorianCalendar::createInstance(status); 306750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (failure(status, "GregorianCalendar::createInstance", TRUE)) return; 3068b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho SimpleDateFormat testfmt(UnicodeString("yyyy-MM-dd'T'HH:mm:ss'Z'"), status); 3069b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (failure(status, "SimpleDateFormat constructor", TRUE)) return; 3070b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho testfmt.setTimeZone(*TimeZone::getGMT()); 3071b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 307285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int i = 0; fallbackTests[i][0]; i++) { 307385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho const char **testLine = fallbackTests[i]; 307485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString info[5]; 307585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for ( int j = 0 ; j < 5 ; j++ ) { 307685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho info[j] = UnicodeString(testLine[j], -1, US_INV); 307785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 307885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho info[4] = info[4].unescape(); 307985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln("%s;%s;%s;%s", testLine[0], testLine[1], testLine[2], testLine[3]); 3080b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 308185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho TimeZone *tz = TimeZone::createTimeZone(info[1]); 308285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 3083b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UDate d = testfmt.parse(testLine[2], status); 3084b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho cal->setTime(d, status); 3085b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (U_FAILURE(status)) { 3086b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho errln(UnicodeString("Failed to set date: ") + testLine[2]); 308785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 308885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 308985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho SimpleDateFormat fmt(info[3], Locale(testLine[0]),status); 309085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ASSERT_OK(status); 309185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho cal->adoptTimeZone(tz); 309285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString result; 309385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho FieldPosition pos(0); 309485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fmt.format(*cal,result,pos); 309585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (result != info[4]) { 309650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho errln(info[0] + ";" + info[1] + ";" + info[2] + ";" + info[3] + " expected: '" + 309785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho info[4] + "' but got: '" + result + "'"); 309885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 309985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 310085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete cal; 310185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho} 310285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 310385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hovoid DateFormatTest::TestRoundtripWithCalendar(void) { 310485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UErrorCode status = U_ZERO_ERROR; 310585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 310685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho TimeZone *tz = TimeZone::createTimeZone("Europe/Paris"); 310785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho TimeZone *gmt = TimeZone::createTimeZone("Etc/GMT"); 310885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 310985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Calendar *calendars[] = { 311085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Calendar::createInstance(*tz, Locale("und@calendar=gregorian"), status), 311185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Calendar::createInstance(*tz, Locale("und@calendar=buddhist"), status), 311285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho// Calendar::createInstance(*tz, Locale("und@calendar=hebrew"), status), 311385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Calendar::createInstance(*tz, Locale("und@calendar=islamic"), status), 311485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Calendar::createInstance(*tz, Locale("und@calendar=japanese"), status), 311585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho NULL 311685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho }; 311785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (U_FAILURE(status)) { 311850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho dataerrln("Failed to initialize calendars: %s", u_errorName(status)); 311985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int i = 0; calendars[i] != NULL; i++) { 312085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete calendars[i]; 312185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 312285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho return; 312385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 3124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 312585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho //FIXME The formatters commented out below are currently failing because of 312685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // the calendar calculation problem reported by #6691 312785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 312885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // The order of test formatters must match the order of calendars above. 312985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat *formatters[] = { 313085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale("en_US")), //calendar=gregorian 313185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale("th_TH")), //calendar=buddhist 313285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho// DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale("he_IL@calendar=hebrew")), 313385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale("ar_EG@calendar=islamic")), 313485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho// DateFormat::createDateTimeInstance(DateFormat::kFull, DateFormat::kFull, Locale("ja_JP@calendar=japanese")), 313585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho NULL 313685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho }; 313785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 313885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate d = Calendar::getNow(); 313985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString buf; 314085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho FieldPosition fpos; 314185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ParsePosition ppos; 314285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 314385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int i = 0; formatters[i] != NULL; i++) { 314485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho buf.remove(); 314585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fpos.setBeginIndex(0); 314685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fpos.setEndIndex(0); 314785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho calendars[i]->setTime(d, status); 314885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 314985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // Normal case output - the given calendar matches the calendar 315085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // used by the formatter 315185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho formatters[i]->format(*calendars[i], buf, fpos); 315285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString refStr(buf); 315385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 315485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int j = 0; calendars[j] != NULL; j++) { 315585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (j == i) { 315685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho continue; 315785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 315885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho buf.remove(); 315985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fpos.setBeginIndex(0); 316085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fpos.setEndIndex(0); 316185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho calendars[j]->setTime(d, status); 316285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 316385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // Even the different calendar type is specified, 316485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // we should get the same result. 316585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho formatters[i]->format(*calendars[j], buf, fpos); 316685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (refStr != buf) { 316785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Different format result with a different calendar for the same time -" 316885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Reference calendar type=" + calendars[i]->getType() 316985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Another calendar type=" + calendars[j]->getType() 317085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Expected result=" + refStr 317185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Actual result=" + buf); 3172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 317385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 3174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 317585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho calendars[i]->setTimeZone(*gmt); 317685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho calendars[i]->clear(); 317785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ppos.setErrorIndex(-1); 317885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ppos.setIndex(0); 317985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 318085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // Normal case parse result - the given calendar matches the calendar 318185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // used by the formatter 318285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho formatters[i]->parse(refStr, *calendars[i], ppos); 318385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 318485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int j = 0; calendars[j] != NULL; j++) { 318585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (j == i) { 318685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho continue; 318785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 318885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho calendars[j]->setTimeZone(*gmt); 318985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho calendars[j]->clear(); 319085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ppos.setErrorIndex(-1); 319185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ppos.setIndex(0); 319285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 319385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // Even the different calendar type is specified, 319485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // we should get the same time and time zone. 319585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho formatters[i]->parse(refStr, *calendars[j], ppos); 319685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (calendars[i]->getTime(status) != calendars[j]->getTime(status) 319785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho || calendars[i]->getTimeZone() != calendars[j]->getTimeZone()) { 319885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString tzid; 319985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Different parse result with a different calendar for the same string -" 320085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Reference calendar type=" + calendars[i]->getType() 320185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Another calendar type=" + calendars[j]->getType() 320285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Date string=" + refStr 320385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Expected time=" + calendars[i]->getTime(status) 320485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Expected time zone=" + calendars[i]->getTimeZone().getID(tzid) 320585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Actual time=" + calendars[j]->getTime(status) 320685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + "\n Actual time zone=" + calendars[j]->getTimeZone().getID(tzid)); 3207b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 3208b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 320985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (U_FAILURE(status)) { 321085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: " + u_errorName(status)); 321185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho break; 321285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 321385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 321485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 321585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete tz; 321685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete gmt; 321785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int i = 0; calendars[i] != NULL; i++) { 321885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete calendars[i]; 321985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 322085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho for (int i = 0; formatters[i] != NULL; i++) { 322185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete formatters[i]; 3222b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 3223b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 3224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3225b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* 3226b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestRelativeError(void) 3227b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 3228b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode status; 3229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale en("en"); 323050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 3231b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormat *en_reltime_reldate = DateFormat::createDateTimeInstance(DateFormat::kFullRelative,DateFormat::kFullRelative,en); 3232b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru if(en_reltime_reldate == NULL) { 3233b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("PASS: rel date/rel time failed"); 3234b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } else { 3235b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru errln("FAIL: rel date/rel time created, should have failed."); 3236b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru delete en_reltime_reldate; 3237b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru } 3238b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 3239b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3240b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruvoid DateFormatTest::TestRelativeOther(void) 3241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 3242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru logln("Nothing in this test. When we get more data from CLDR, put in some tests of -2, +2, etc. "); 3243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 3244b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 3245b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 324685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hovoid DateFormatTest::Test6338(void) 324785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho{ 324885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UErrorCode status = U_ZERO_ERROR; 324985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 325085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho SimpleDateFormat *fmt1 = new SimpleDateFormat(UnicodeString("y-M-d"), Locale("ar"), status); 325150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (failure(status, "new SimpleDateFormat", TRUE)) return; 325285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 325385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt1 = date(2008-1900, UCAL_JUNE, 10, 12, 00); 325485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str1; 325585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str1 = fmt1->format(dt1, str1); 325685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str1); 325785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 325885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt11 = fmt1->parse(str1, status); 325985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "fmt->parse"); 326085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 326185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str11; 326285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str11 = fmt1->format(dt11, str11); 326385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str11); 326485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 326585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (str1 != str11) { 326685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Different dates str1:" + str1 326785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + " str2:" + str11); 326885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 326985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmt1; 327085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 327185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ///////////////// 327285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 327385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho status = U_ZERO_ERROR; 327485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho SimpleDateFormat *fmt2 = new SimpleDateFormat(UnicodeString("y M d"), Locale("ar"), status); 327585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "new SimpleDateFormat"); 327685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 327785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt2 = date(2008-1900, UCAL_JUNE, 10, 12, 00); 327885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str2; 327985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str2 = fmt2->format(dt2, str2); 328085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str2); 328185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 328285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt22 = fmt2->parse(str2, status); 328385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "fmt->parse"); 328485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 328585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str22; 328685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str22 = fmt2->format(dt22, str22); 328785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str22); 328885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 328985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (str2 != str22) { 329085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Different dates str1:" + str2 329185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + " str2:" + str22); 329285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 329385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmt2; 329485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 329585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ///////////////// 329685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 329785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho status = U_ZERO_ERROR; 329885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho SimpleDateFormat *fmt3 = new SimpleDateFormat(UnicodeString("y-M-d"), Locale("en-us"), status); 329985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "new SimpleDateFormat"); 330085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 330185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt3 = date(2008-1900, UCAL_JUNE, 10, 12, 00); 330285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str3; 330385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str3 = fmt3->format(dt3, str3); 330485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str3); 330585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 330685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt33 = fmt3->parse(str3, status); 330785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "fmt->parse"); 330885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 330985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str33; 331085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str33 = fmt3->format(dt33, str33); 331185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str33); 331285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 331385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (str3 != str33) { 331485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Different dates str1:" + str3 331585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + " str2:" + str33); 331685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 331785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmt3; 331885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 331985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho ///////////////// 332085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 332185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho status = U_ZERO_ERROR; 332285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho SimpleDateFormat *fmt4 = new SimpleDateFormat(UnicodeString("y M d"), Locale("en-us"), status); 332385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "new SimpleDateFormat"); 332485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 332585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt4 = date(2008-1900, UCAL_JUNE, 10, 12, 00); 332685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str4; 332785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str4 = fmt4->format(dt4, str4); 332885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str4); 332985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 333085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt44 = fmt4->parse(str4, status); 333185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho failure(status, "fmt->parse"); 333285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 333385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString str44; 333485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho str44 = fmt4->format(dt44, str44); 333585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho logln(str44); 333685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 333785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (str4 != str44) { 333885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln((UnicodeString)"FAIL: Different dates str1:" + str4 333985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho + " str2:" + str44); 334085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 334185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmt4; 334285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 334385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho} 334485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 334585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hovoid DateFormatTest::Test6726(void) 334685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho{ 334785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // status 334885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho// UErrorCode status = U_ZERO_ERROR; 334985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 335085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // fmtf, fmtl, fmtm, fmts; 335185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString strf, strl, strm, strs; 335285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate dt = date(2008-1900, UCAL_JUNE, 10, 12, 00); 335385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 335485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho Locale loc("ja"); 335585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat* fmtf = DateFormat::createDateTimeInstance(DateFormat::FULL, DateFormat::FULL, loc); 335685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat* fmtl = DateFormat::createDateTimeInstance(DateFormat::LONG, DateFormat::FULL, loc); 335785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat* fmtm = DateFormat::createDateTimeInstance(DateFormat::MEDIUM, DateFormat::FULL, loc); 335885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat* fmts = DateFormat::createDateTimeInstance(DateFormat::SHORT, DateFormat::FULL, loc); 335985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (fmtf == NULL || fmtl == NULL || fmtm == NULL || fmts == NULL) { 336085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("Unable to create DateFormat. got NULL."); 336185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho /* It may not be true that if one is NULL all is NULL. Just to be safe. */ 336285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmtf; 336385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmtl; 336485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmtm; 336585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmts; 336650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 336785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho return; 336885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 336985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho strf = fmtf->format(dt, strf); 337085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho strl = fmtl->format(dt, strl); 337185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho strm = fmtm->format(dt, strm); 337285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho strs = fmts->format(dt, strs); 337385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 337427f654740f2a26ad62a5c155af9199af9e69b889claireho 337585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho/* Locale data is not yet updated 337627f654740f2a26ad62a5c155af9199af9e69b889claireho if (strf.charAt(13) == UChar(0x20)) { 337727f654740f2a26ad62a5c155af9199af9e69b889claireho errln((UnicodeString)"FAIL: Improper formatted date: " + strf); 337885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 337927f654740f2a26ad62a5c155af9199af9e69b889claireho if (strl.charAt(10) == UChar(0x20)) { 338027f654740f2a26ad62a5c155af9199af9e69b889claireho errln((UnicodeString)"FAIL: Improper formatted date: " + strl); 338185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 338285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho*/ 338327f654740f2a26ad62a5c155af9199af9e69b889claireho logln("strm.charAt(10)=%04X wanted 0x20\n", strm.charAt(10)); 338427f654740f2a26ad62a5c155af9199af9e69b889claireho if (strm.charAt(10) != UChar(0x0020)) { 338527f654740f2a26ad62a5c155af9199af9e69b889claireho errln((UnicodeString)"FAIL: Improper formatted date: " + strm ); 338685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 338727f654740f2a26ad62a5c155af9199af9e69b889claireho logln("strs.charAt(10)=%04X wanted 0x20\n", strs.charAt(8)); 338827f654740f2a26ad62a5c155af9199af9e69b889claireho if (strs.charAt(8) != UChar(0x0020)) { 338927f654740f2a26ad62a5c155af9199af9e69b889claireho errln((UnicodeString)"FAIL: Improper formatted date: " + strs); 339085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 339185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 339285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmtf; 339350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete fmtl; 339450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho delete fmtm; 339585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmts; 339685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 339785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho return; 339885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho} 339985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 340085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho/** 340185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho * Test DateFormat's parsing of default GMT variants. See ticket#6135 340285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho */ 340385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hovoid DateFormatTest::TestGMTParsing() { 340485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho const char* DATA[] = { 340585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "HH:mm:ss Z", 340685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 340785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho // pattern, input, expected output (in quotes) 340885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "HH:mm:ss Z", "10:20:30 GMT+03:00", "10:20:30 +0300", 340985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "HH:mm:ss Z", "10:20:30 UT-02:00", "10:20:30 -0200", 341085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "HH:mm:ss Z", "10:20:30 GMT", "10:20:30 +0000", 341185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "HH:mm:ss vvvv", "10:20:30 UT+10:00", "10:20:30 +1000", 341285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "HH:mm:ss zzzz", "10:20:30 UTC", "10:20:30 +0000", // standalone "UTC" 341385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "ZZZZ HH:mm:ss", "UT 10:20:30", "10:20:30 +0000", 341485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "V HH:mm:ss", "UT+0130 10:20:30", "10:20:30 +0130", 341585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "V HH:mm:ss", "UTC+0130 10:20:30", NULL, // UTC+0130 is not a supported pattern 341685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho "HH mm Z ss", "10 20 GMT-1100 30", "10:20:30 -1100", 341785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho }; 341885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho const int32_t DATA_len = sizeof(DATA)/sizeof(DATA[0]); 341985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho expectParse(DATA, DATA_len, Locale("en")); 342085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho} 342185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 342285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho// Test case for localized GMT format parsing 342385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho// with no delimitters in offset format (Chinese locale) 342485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Hovoid DateFormatTest::Test6880() { 342585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UErrorCode status = U_ZERO_ERROR; 342685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UDate d1, d2, dp1, dp2, dexp1, dexp2; 342785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho UnicodeString s1, s2; 342885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 342985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho TimeZone *tz = TimeZone::createTimeZone("Asia/Shanghai"); 343085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho GregorianCalendar gcal(*tz, status); 343150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho if (failure(status, "construct GregorianCalendar", TRUE)) return; 343250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 343385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho gcal.clear(); 343485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho gcal.set(1910, UCAL_JULY, 1, 12, 00); // offset 8:05:52 343585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho d1 = gcal.getTime(status); 343685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 343785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho gcal.clear(); 343885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho gcal.set(1950, UCAL_JULY, 1, 12, 00); // offset 8:00 343985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho d2 = gcal.getTime(status); 344085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 344185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho gcal.clear(); 344285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho gcal.set(1970, UCAL_JANUARY, 1, 12, 00); 344385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dexp2 = gcal.getTime(status); 344485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dexp1 = dexp2 - (5*60 + 52)*1000; // subtract 5m52s 344585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 344685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (U_FAILURE(status)) { 344785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln("FAIL: Gregorian calendar error"); 344885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 344985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 345085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho DateFormat *fmt = DateFormat::createTimeInstance(DateFormat::kFull, Locale("zh")); 345185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (fmt == NULL) { 345285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dataerrln("Unable to create DateFormat. Got NULL."); 345385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho return; 345485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 345585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fmt->adoptTimeZone(tz); 345685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 345785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fmt->format(d1, s1); 345885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho fmt->format(d2, s2); 345985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 346085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dp1 = fmt->parse(s1, status); 346185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho dp2 = fmt->parse(s2, status); 346285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 346385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (U_FAILURE(status)) { 346485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln("FAIL: Parse failure"); 346585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 346685bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 346785bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (dp1 != dexp1) { 346885bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln("FAIL: Failed to parse " + s1 + " parsed: " + dp1 + " expected: " + dexp1); 346985bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 347085bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho if (dp2 != dexp2) { 347185bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho errln("FAIL: Failed to parse " + s2 + " parsed: " + dp2 + " expected: " + dexp2); 347285bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho } 347385bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho 347485bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho delete fmt; 347585bf2e2fbc60a9f938064abc8127d61da7d19882Claire Ho} 3476b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3477b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2clairehotypedef struct { 3478b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho const char * localeStr; 3479b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UBool lenient; 3480b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UBool expectFail; 3481b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UnicodeString datePattern; 3482b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UnicodeString dateString; 3483b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho} NumAsStringItem; 3484b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3485b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2clairehovoid DateFormatTest::TestNumberAsStringParsing() 3486b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho{ 3487b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho const NumAsStringItem items[] = { 3488b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho // loc lenient fail? datePattern dateString 3489b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "", FALSE, FALSE, UnicodeString("y MMMM d HH:mm:ss"), UnicodeString("2009 7 14 08:43:57") }, 3490b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "", TRUE, FALSE, UnicodeString("y MMMM d HH:mm:ss"), UnicodeString("2009 7 14 08:43:57") }, 3491b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", FALSE, FALSE, UnicodeString("MMM d, y"), UnicodeString("Jul 14, 2009") }, 3492b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", TRUE, FALSE, UnicodeString("MMM d, y"), UnicodeString("Jul 14, 2009") }, 3493b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", FALSE, TRUE, UnicodeString("MMM d, y"), UnicodeString("7 14, 2009") }, 3494b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "en", TRUE, FALSE, UnicodeString("MMM d, y"), UnicodeString("7 14, 2009") }, 3495b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", FALSE, FALSE, UnicodeString("yyyy/MM/dd"), UnicodeString("2009/07/14") }, 3496b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", TRUE, FALSE, UnicodeString("yyyy/MM/dd"), UnicodeString("2009/07/14") }, 3497b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho //{ "ja", FALSE, FALSE, UnicodeString("yyyy/MMMMM/d"), UnicodeString("2009/7/14") }, // #8860 covers test failure 3498b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", TRUE, FALSE, UnicodeString("yyyy/MMMMM/d"), UnicodeString("2009/7/14") }, 3499b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", FALSE, FALSE, CharsToUnicodeString("y\\u5E74M\\u6708d\\u65E5"), CharsToUnicodeString("2009\\u5E747\\u670814\\u65E5") }, 3500b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", TRUE, FALSE, CharsToUnicodeString("y\\u5E74M\\u6708d\\u65E5"), CharsToUnicodeString("2009\\u5E747\\u670814\\u65E5") }, 3501b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", FALSE, FALSE, CharsToUnicodeString("y\\u5E74MMMd\\u65E5"), CharsToUnicodeString("2009\\u5E747\\u670814\\u65E5") }, 3502b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ja", TRUE, FALSE, CharsToUnicodeString("y\\u5E74MMMd\\u65E5"), CharsToUnicodeString("2009\\u5E747\\u670814\\u65E5") }, // #8820 fixes test failure 3503b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ko", FALSE, FALSE, UnicodeString("yyyy. M. d."), UnicodeString("2009. 7. 14.") }, 3504b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ko", TRUE, FALSE, UnicodeString("yyyy. M. d."), UnicodeString("2009. 7. 14.") }, 3505b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ko", FALSE, FALSE, UnicodeString("yyyy. MMMMM d."), CharsToUnicodeString("2009. 7\\uC6D4 14.") }, 3506b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ko", TRUE, FALSE, UnicodeString("yyyy. MMMMM d."), CharsToUnicodeString("2009. 7\\uC6D4 14.") }, // #8820 fixes test failure 3507b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ko", FALSE, FALSE, CharsToUnicodeString("y\\uB144 M\\uC6D4 d\\uC77C"), CharsToUnicodeString("2009\\uB144 7\\uC6D4 14\\uC77C") }, 3508b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ko", TRUE, FALSE, CharsToUnicodeString("y\\uB144 M\\uC6D4 d\\uC77C"), CharsToUnicodeString("2009\\uB144 7\\uC6D4 14\\uC77C") }, 3509b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ko", FALSE, FALSE, CharsToUnicodeString("y\\uB144 MMM d\\uC77C"), CharsToUnicodeString("2009\\uB144 7\\uC6D4 14\\uC77C") }, 3510b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { "ko", TRUE, FALSE, CharsToUnicodeString("y\\uB144 MMM d\\uC77C"), CharsToUnicodeString("2009\\uB144 7\\uC6D4 14\\uC77C") }, // #8820 fixes test failure 3511b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho { NULL, FALSE, FALSE, UnicodeString(""), UnicodeString("") } 3512b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho }; 3513b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho const NumAsStringItem * itemPtr; 3514b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho for (itemPtr = items; itemPtr->localeStr != NULL; itemPtr++ ) { 3515b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho Locale locale = Locale::createFromName(itemPtr->localeStr); 3516b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UErrorCode status = U_ZERO_ERROR; 3517b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho SimpleDateFormat *formatter = new SimpleDateFormat(itemPtr->datePattern, locale, status); 3518b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (formatter == NULL || U_FAILURE(status)) { 3519b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho dataerrln("Unable to create SimpleDateFormat - %s", u_errorName(status)); 3520b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho return; 3521b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 3522b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3523b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho formatter->setLenient(itemPtr->lenient); 3524b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UDate date1 = formatter->parse(itemPtr->dateString, status); 3525b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (U_FAILURE(status)) { 3526b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (!itemPtr->expectFail) { 3527b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho errln("FAIL, err when expected success: Locale \"" + UnicodeString(itemPtr->localeStr) + "\", lenient " + itemPtr->lenient + 3528b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho ": using pattern \"" + itemPtr->datePattern + "\", could not parse \"" + itemPtr->dateString + "\"; err: " + u_errorName(status) ); 3529b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 3530b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } else if (itemPtr->expectFail) { 3531b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho errln("FAIL, expected err but got none: Locale \"" + UnicodeString(itemPtr->localeStr) + "\", lenient " + itemPtr->lenient + 3532b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho ": using pattern \"" + itemPtr->datePattern + "\", did parse \"" + itemPtr->dateString + "\"." ); 3533b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } else if (!itemPtr->lenient) { 3534b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UnicodeString formatted; 3535b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho formatter->format(date1, formatted); 3536b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (formatted != itemPtr->dateString) { 3537b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho errln("FAIL, mismatch formatting parsed date: Locale \"" + UnicodeString(itemPtr->localeStr) + "\", lenient " + itemPtr->lenient + 3538b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho ": using pattern \"" + itemPtr->datePattern + "\", did parse \"" + itemPtr->dateString + "\", formatted result \"" + formatted + "\"."); 3539b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 3540b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 3541b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3542b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho delete formatter; 3543b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 3544b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho} 3545b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 354627f654740f2a26ad62a5c155af9199af9e69b889clairehovoid DateFormatTest::TestISOEra() { 354727f654740f2a26ad62a5c155af9199af9e69b889claireho 354827f654740f2a26ad62a5c155af9199af9e69b889claireho const char* data[] = { 354927f654740f2a26ad62a5c155af9199af9e69b889claireho // input, output 355027f654740f2a26ad62a5c155af9199af9e69b889claireho "BC 4004-10-23T07:00:00Z", "BC 4004-10-23T07:00:00Z", 355127f654740f2a26ad62a5c155af9199af9e69b889claireho "AD 4004-10-23T07:00:00Z", "AD 4004-10-23T07:00:00Z", 355227f654740f2a26ad62a5c155af9199af9e69b889claireho "-4004-10-23T07:00:00Z" , "BC 4005-10-23T07:00:00Z", 355327f654740f2a26ad62a5c155af9199af9e69b889claireho "4004-10-23T07:00:00Z" , "AD 4004-10-23T07:00:00Z", 355427f654740f2a26ad62a5c155af9199af9e69b889claireho }; 355527f654740f2a26ad62a5c155af9199af9e69b889claireho 355627f654740f2a26ad62a5c155af9199af9e69b889claireho int32_t numData = 8; 355727f654740f2a26ad62a5c155af9199af9e69b889claireho 355827f654740f2a26ad62a5c155af9199af9e69b889claireho UErrorCode status = U_ZERO_ERROR; 355927f654740f2a26ad62a5c155af9199af9e69b889claireho 356027f654740f2a26ad62a5c155af9199af9e69b889claireho // create formatter 356127f654740f2a26ad62a5c155af9199af9e69b889claireho SimpleDateFormat *fmt1 = new SimpleDateFormat(UnicodeString("GGG yyyy-MM-dd'T'HH:mm:ss'Z"), status); 356227f654740f2a26ad62a5c155af9199af9e69b889claireho failure(status, "new SimpleDateFormat", TRUE); 3563b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (status == U_MISSING_RESOURCE_ERROR) { 3564b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (fmt1 != NULL) { 3565b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho delete fmt1; 3566b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 3567b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho return; 3568b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 356927f654740f2a26ad62a5c155af9199af9e69b889claireho for(int i=0; i < numData; i+=2) { 357027f654740f2a26ad62a5c155af9199af9e69b889claireho // create input string 357127f654740f2a26ad62a5c155af9199af9e69b889claireho UnicodeString in = data[i]; 357227f654740f2a26ad62a5c155af9199af9e69b889claireho 357327f654740f2a26ad62a5c155af9199af9e69b889claireho // parse string to date 357427f654740f2a26ad62a5c155af9199af9e69b889claireho UDate dt1 = fmt1->parse(in, status); 357527f654740f2a26ad62a5c155af9199af9e69b889claireho failure(status, "fmt->parse", TRUE); 357627f654740f2a26ad62a5c155af9199af9e69b889claireho 357727f654740f2a26ad62a5c155af9199af9e69b889claireho // format date back to string 357827f654740f2a26ad62a5c155af9199af9e69b889claireho UnicodeString out; 357927f654740f2a26ad62a5c155af9199af9e69b889claireho out = fmt1->format(dt1, out); 358027f654740f2a26ad62a5c155af9199af9e69b889claireho logln(out); 358127f654740f2a26ad62a5c155af9199af9e69b889claireho 358227f654740f2a26ad62a5c155af9199af9e69b889claireho // check that roundtrip worked as expected 358327f654740f2a26ad62a5c155af9199af9e69b889claireho UnicodeString expected = data[i+1]; 358427f654740f2a26ad62a5c155af9199af9e69b889claireho if (out != expected) { 358527f654740f2a26ad62a5c155af9199af9e69b889claireho dataerrln((UnicodeString)"FAIL: " + in + " -> " + out + " expected -> " + expected); 358627f654740f2a26ad62a5c155af9199af9e69b889claireho } 358727f654740f2a26ad62a5c155af9199af9e69b889claireho } 358827f654740f2a26ad62a5c155af9199af9e69b889claireho 3589b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho delete fmt1; 359027f654740f2a26ad62a5c155af9199af9e69b889claireho} 359127f654740f2a26ad62a5c155af9199af9e69b889clairehovoid DateFormatTest::TestFormalChineseDate() { 359227f654740f2a26ad62a5c155af9199af9e69b889claireho 359327f654740f2a26ad62a5c155af9199af9e69b889claireho UErrorCode status = U_ZERO_ERROR; 359427f654740f2a26ad62a5c155af9199af9e69b889claireho UnicodeString pattern ("y\\u5e74M\\u6708d\\u65e5", -1, US_INV ); 359527f654740f2a26ad62a5c155af9199af9e69b889claireho pattern = pattern.unescape(); 359627f654740f2a26ad62a5c155af9199af9e69b889claireho UnicodeString override ("y=hanidec;M=hans;d=hans", -1, US_INV ); 359727f654740f2a26ad62a5c155af9199af9e69b889claireho 359827f654740f2a26ad62a5c155af9199af9e69b889claireho // create formatter 359927f654740f2a26ad62a5c155af9199af9e69b889claireho SimpleDateFormat *sdf = new SimpleDateFormat(pattern,override,Locale::getChina(),status); 360027f654740f2a26ad62a5c155af9199af9e69b889claireho failure(status, "new SimpleDateFormat with override", TRUE); 360127f654740f2a26ad62a5c155af9199af9e69b889claireho 360227f654740f2a26ad62a5c155af9199af9e69b889claireho UDate thedate = date(2009-1900, UCAL_JULY, 28); 360327f654740f2a26ad62a5c155af9199af9e69b889claireho FieldPosition pos(0); 360427f654740f2a26ad62a5c155af9199af9e69b889claireho UnicodeString result; 360527f654740f2a26ad62a5c155af9199af9e69b889claireho sdf->format(thedate,result,pos); 360627f654740f2a26ad62a5c155af9199af9e69b889claireho 360727f654740f2a26ad62a5c155af9199af9e69b889claireho UnicodeString expected = "\\u4e8c\\u3007\\u3007\\u4e5d\\u5e74\\u4e03\\u6708\\u4e8c\\u5341\\u516b\\u65e5"; 360827f654740f2a26ad62a5c155af9199af9e69b889claireho expected = expected.unescape(); 360927f654740f2a26ad62a5c155af9199af9e69b889claireho if (result != expected) { 361027f654740f2a26ad62a5c155af9199af9e69b889claireho dataerrln((UnicodeString)"FAIL: -> " + result + " expected -> " + expected); 361127f654740f2a26ad62a5c155af9199af9e69b889claireho } 361227f654740f2a26ad62a5c155af9199af9e69b889claireho 361327f654740f2a26ad62a5c155af9199af9e69b889claireho UDate parsedate = sdf->parse(expected,status); 361427f654740f2a26ad62a5c155af9199af9e69b889claireho if ( parsedate != thedate ) { 361527f654740f2a26ad62a5c155af9199af9e69b889claireho UnicodeString pat1 ("yyyy-MM-dd'T'HH:mm:ss'Z'", -1, US_INV ); 361627f654740f2a26ad62a5c155af9199af9e69b889claireho SimpleDateFormat *usf = new SimpleDateFormat(pat1,Locale::getEnglish(),status); 361727f654740f2a26ad62a5c155af9199af9e69b889claireho UnicodeString parsedres,expres; 361827f654740f2a26ad62a5c155af9199af9e69b889claireho usf->format(parsedate,parsedres,pos); 361927f654740f2a26ad62a5c155af9199af9e69b889claireho usf->format(thedate,expres,pos); 3620b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho dataerrln((UnicodeString)"FAIL: parsed -> " + parsedres + " expected -> " + expres); 362127f654740f2a26ad62a5c155af9199af9e69b889claireho delete usf; 362227f654740f2a26ad62a5c155af9199af9e69b889claireho } 3623b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho delete sdf; 3624b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho} 3625b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3626b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho// Test case for #8675 3627b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho// Incorrect parse offset with stand alone GMT string on 2nd or later iteration. 3628b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2clairehovoid DateFormatTest::TestStandAloneGMTParse() { 3629b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UErrorCode status = U_ZERO_ERROR; 3630b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho SimpleDateFormat *sdf = new SimpleDateFormat("ZZZZ", Locale(""), status); 3631b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3632b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (!failure(status, "new SimpleDateFormat")) { 3633b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3634b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho UnicodeString inText("GMT$$$"); 3635b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho for (int32_t i = 0; i < 10; i++) { 3636b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho ParsePosition pos(0); 3637b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho sdf->parse(inText, pos); 3638b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho if (pos.getIndex() != 3) { 3639b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho errln((UnicodeString)"FAIL: Incorrect output parse position: actual=" + pos.getIndex() + " expected=3"); 3640b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 3641b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 3642b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 3643b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho delete sdf; 3644b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho } 3645b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho} 364627f654740f2a26ad62a5c155af9199af9e69b889claireho 3647b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_FORMATTING */ 3648b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 3649b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//eof 3650