1b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/* 2b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho* Copyright (C) 1997-2011, International Business Machines Corporation and 350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho* others. All Rights Reserved. 4b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru******************************************************************************* 5b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* File SMPDTFMT.H 7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Modification History: 9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Date Name Description 11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 02/19/97 aliu Converted from java. 12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 07/09/97 helena Make ParsePosition into a class. 13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 07/21/98 stephen Added GMT_PLUS, GMT_MINUS 14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Changed setTwoDigitStartDate to set2DigitYearStart 15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Changed getTwoDigitStartDate to get2DigitYearStart 16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Removed subParseLong 17b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Removed getZoneIndex (added in DateFormatSymbols) 18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 06/14/99 stephen Removed fgTimeZoneDataSuffix 19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* 10/14/99 aliu Updated class doc to describe 2-digit year parsing 20b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* {j28 4182066}. 21b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru******************************************************************************* 22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/ 23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifndef SMPDTFMT_H 25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define SMPDTFMT_H 26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/utypes.h" 28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 3050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * \file 31b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \brief C++ API: Format and parse dates in a language-independent manner. 32b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 3350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING 35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/datefmt.h" 37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_NAMESPACE_BEGIN 39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclass DateFormatSymbols; 41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclass DateFormat; 42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclass MessageFormat; 4350294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoclass FieldPositionHandler; 44b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2clairehoclass TimeZoneFormat; 45b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** 47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 48b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * SimpleDateFormat is a concrete class for formatting and parsing dates in a 49b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * language-independent manner. It allows for formatting (millis -> text), 50b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * parsing (text -> millis), and normalization. Formats/Parses a date or time, 51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * which is the standard milliseconds since 24:00 GMT, Jan 1, 1970. 52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 53b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Clients are encouraged to create a date-time formatter using DateFormat::getInstance(), 54b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * getDateInstance(), getDateInstance(), or getDateTimeInstance() rather than 55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * explicitly constructing an instance of SimpleDateFormat. This way, the client 56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * is guaranteed to get an appropriate formatting pattern for whatever locale the 57b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * program is running in. However, if the client needs something more unusual than 58b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the default patterns in the locales, he can construct a SimpleDateFormat directly 59b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * and give it an appropriate pattern (or use one of the factory methods on DateFormat 60b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * and modify the pattern after the fact with toPattern() and applyPattern(). 61b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 62b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Date/Time format syntax: 63b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 64b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The date/time format is specified by means of a string time pattern. In this 65b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * pattern, all ASCII letters are reserved as pattern letters, which are defined 66b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * as the following: 67b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <pre> 68b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \code 69b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Symbol Meaning Presentation Example 70b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * ------ ------- ------------ ------- 71b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * G era designator (Text) AD 72b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * y year (Number) 1996 73b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Y year (week of year) (Number) 1997 74b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * u extended year (Number) 4601 75c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * Q Quarter (Text & Number) Q2 & 02 76b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * M month in year (Text & Number) July & 07 77b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * d day in month (Number) 10 78b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * h hour in am/pm (1~12) (Number) 12 79b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * H hour in day (0~23) (Number) 0 80b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * m minute in hour (Number) 30 81b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * s second in minute (Number) 55 82b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * S fractional second (Number) 978 83b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * E day of week (Text) Tuesday 84c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * e day of week (local 1~7) (Text & Number) Tues & 2 85b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * D day in year (Number) 189 86b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * F day of week in month (Number) 2 (2nd Wed in July) 87b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * w week in year (Number) 27 88b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * W week in month (Number) 2 89b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * a am/pm marker (Text) PM 90b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * k hour in day (1~24) (Number) 24 91b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * K hour in am/pm (0~11) (Number) 0 92b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * z time zone (Time) Pacific Standard Time 93b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Z time zone (RFC 822) (Number) -0800 94b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * v time zone (generic) (Text) Pacific Time 95c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * V time zone (abreviation) (Text) PT 96c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * VVVV time zone (location) (Text) United States (Los Angeles) 97b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * g Julian day (Number) 2451334 98b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A milliseconds in day (Number) 69540000 99c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * q stand alone quarter (Text & Number) Q2 & 02 100c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * L stand alone month (Text & Number) July & 07 101c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * c stand alone day of week (Text & Number) Tuesday & 2 102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * ' escape for text (Delimiter) 'Date=' 103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * '' single quote (Literal) 'o''clock' 104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \endcode 105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </pre> 106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The count of pattern letters determine the format. 107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * (Text): 4 or more, use full form, <4, use short or abbreviated form if it 109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * exists. (e.g., "EEEE" produces "Monday", "EEE" produces "Mon") 110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * (Number): the minimum number of digits. Shorter numbers are zero-padded to 112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * this amount (e.g. if "m" produces "6", "mm" produces "06"). Year is handled 113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * specially; that is, if the count of 'y' is 2, the Year will be truncated to 2 digits. 114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * (e.g., if "yyyy" produces "1997", "yy" produces "97".) 115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Unlike other fields, fractional seconds are padded on the right with zero. 116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * (Text & Number): 3 or over, use text, otherwise use number. (e.g., "M" produces "1", 118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * "MM" produces "01", "MMM" produces "Jan", and "MMMM" produces "January".) 119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Any characters in the pattern that are not in the ranges of ['a'..'z'] and 121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * ['A'..'Z'] will be treated as quoted text. For instance, characters 122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * like ':', '.', ' ', '#' and '@' will appear in the resulting time text 123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * even they are not embraced within single quotes. 124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A pattern containing any invalid pattern letter will result in a failing 126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UErrorCode result during formatting or parsing. 127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Examples using the US locale: 129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <pre> 130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \code 131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Format Pattern Result 132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * -------------- ------- 133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * "yyyy.MM.dd G 'at' HH:mm:ss vvvv" ->> 1996.07.10 AD at 15:08:56 Pacific Time 134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * "EEE, MMM d, ''yy" ->> Wed, July 10, '96 135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * "h:mm a" ->> 12:08 PM 136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * "hh 'o''clock' a, zzzz" ->> 12 o'clock PM, Pacific Daylight Time 137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * "K:mm a, vvv" ->> 0:00 PM, PT 138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * "yyyyy.MMMMM.dd GGG hh:mm aaa" ->> 1996.July.10 AD 12:08 PM 139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \endcode 140b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </pre> 141b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Code Sample: 142b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <pre> 143b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \code 144b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UErrorCode success = U_ZERO_ERROR; 145b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * SimpleTimeZone* pdt = new SimpleTimeZone(-8 * 60 * 60 * 1000, "PST"); 146b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * pdt->setStartRule( Calendar::APRIL, 1, Calendar::SUNDAY, 2*60*60*1000); 147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * pdt->setEndRule( Calendar::OCTOBER, -1, Calendar::SUNDAY, 2*60*60*1000); 148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * // Format the current time. 150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * SimpleDateFormat* formatter 151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * = new SimpleDateFormat ("yyyy.MM.dd G 'at' hh:mm:ss a zzz", success ); 152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * GregorianCalendar cal(success); 153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UDate currentTime_1 = cal.getTime(success); 154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * FieldPosition fp(0); 155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UnicodeString dateString; 156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * formatter->format( currentTime_1, dateString, fp ); 157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * cout << "result: " << dateString << endl; 158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * // Parse the previous string back into a Date. 160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * ParsePosition pp(0); 161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UDate currentTime_2 = formatter->parse(dateString, pp ); 162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \endcode 163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </pre> 164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * In the above example, the time value "currentTime_2" obtained from parsing 165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * will be equal to currentTime_1. However, they may not be equal if the am/pm 166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * marker 'a' is left out from the format pattern while the "hour in am/pm" 167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * pattern symbol is used. This information loss can happen when formatting the 168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * time in PM. 169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <p> 171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * When parsing a date string using the abbreviated year pattern ("y" or "yy"), 172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * SimpleDateFormat must interpret the abbreviated year 173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * relative to some century. It does this by adjusting dates to be 174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * within 80 years before and 20 years after the time the SimpleDateFormat 175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * instance is created. For example, using a pattern of "MM/dd/yy" and a 176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * SimpleDateFormat instance created on Jan 1, 1997, the string 177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * "01/11/12" would be interpreted as Jan 11, 2012 while the string "05/04/64" 178b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * would be interpreted as May 4, 1964. 179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * During parsing, only strings consisting of exactly two digits, as defined by 180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <code>Unicode::isDigit()</code>, will be parsed into the default century. 181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Any other numeric string, such as a one digit string, a three or more digit 182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * string, or a two digit string that isn't all digits (for example, "-1"), is 183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * interpreted literally. So "01/02/3" or "01/02/003" are parsed, using the 184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * same pattern, as Jan 2, 3 AD. Likewise, "01/02/-3" is parsed as Jan 2, 4 BC. 185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 186b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <p> 187b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If the year pattern has more than two 'y' characters, the year is 188b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * interpreted literally, regardless of the number of digits. So using the 189b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * pattern "MM/dd/yyyy", "01/11/12" parses to Jan 11, 12 A.D. 190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <p> 192b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * When numeric fields abut one another directly, with no intervening delimiter 193b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * characters, they constitute a run of abutting numeric fields. Such runs are 194b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * parsed specially. For example, the format "HHmmss" parses the input text 195b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * "123456" to 12:34:56, parses the input text "12345" to 1:23:45, and fails to 196b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * parse "1234". In other words, the leftmost field of the run is flexible, 197b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * while the others keep a fixed width. If the parse fails anywhere in the run, 198b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * then the leftmost field is shortened by one character, and the entire run is 199b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * parsed again. This is repeated until either the parse succeeds or the 200b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * leftmost field is one character in length. If the parse still fails at that 201b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * point, the parse of the run fails. 202b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 203b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 204b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * For time zones that have no names, SimpleDateFormat uses strings GMT+hours:minutes or 205b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * GMT-hours:minutes. 206b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 207b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The calendar defines what is the first day of the week, the first week of the 208b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * year, whether hours are zero based or not (0 vs 12 or 24), and the timezone. 209b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * There is one common number format to handle all the numbers; the digit count 210b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * is handled programmatically according to the pattern. 211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <p><em>User subclasses are not supported.</em> While clients may write 213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * subclasses, such code will not necessarily work and will not be 214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * guaranteed to work stably from release to release. 215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruclass U_I18N_API SimpleDateFormat: public DateFormat { 217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querupublic: 218b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 219b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Construct a SimpleDateFormat using the default pattern for the default 220b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * locale. 221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 222b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [Note:] Not all locales support SimpleDateFormat; for full generality, 223b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * use the factory methods in the DateFormat class. 224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status Output param set to success/failure code. 225b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 226b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 227b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat(UErrorCode& status); 228b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 230b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Construct a SimpleDateFormat using the given pattern and the default locale. 231b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The locale is used to obtain the symbols used in formatting (e.g., the 232b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * names of the months), but not to provide the pattern. 233b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 234b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [Note:] Not all locales support SimpleDateFormat; for full generality, 235b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * use the factory methods in the DateFormat class. 236b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param pattern the pattern for the format. 237b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status Output param set to success/failure code. 238b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 239b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 240b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat(const UnicodeString& pattern, 241b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode& status); 242b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 243b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 244b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * Construct a SimpleDateFormat using the given pattern, numbering system override, and the default locale. 245b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * The locale is used to obtain the symbols used in formatting (e.g., the 246b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * names of the months), but not to provide the pattern. 247b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * <P> 248b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * A numbering system override is a string containing either the name of a known numbering system, 249b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * or a set of field and numbering system pairs that specify which fields are to be formattied with 250b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * the alternate numbering system. For example, to specify that all numeric fields in the specified 251b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * date or time pattern are to be rendered using Thai digits, simply specify the numbering system override 252b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * as "thai". To specify that just the year portion of the date be formatted using Hebrew numbering, 253b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * use the override string "y=hebrew". Numbering system overrides can be combined using a semi-colon 254b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * character in the override string, such as "d=decimal;M=arabic;y=hebrew", etc. 255b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * 256b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * <P> 257b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * [Note:] Not all locales support SimpleDateFormat; for full generality, 258b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * use the factory methods in the DateFormat class. 259b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @param pattern the pattern for the format. 260b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @param override the override string. 261b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @param status Output param set to success/failure code. 26250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @stable ICU 4.2 263b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 264b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru SimpleDateFormat(const UnicodeString& pattern, 265b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru const UnicodeString& override, 266b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru UErrorCode& status); 267b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 268b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru /** 269b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Construct a SimpleDateFormat using the given pattern and locale. 270b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The locale is used to obtain the symbols used in formatting (e.g., the 271b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * names of the months), but not to provide the pattern. 272b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 273b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * [Note:] Not all locales support SimpleDateFormat; for full generality, 274b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * use the factory methods in the DateFormat class. 275b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param pattern the pattern for the format. 276b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param locale the given locale. 277b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status Output param set to success/failure code. 278b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 279b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 280b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat(const UnicodeString& pattern, 281b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const Locale& locale, 282b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode& status); 283b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 284b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 285b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * Construct a SimpleDateFormat using the given pattern, numbering system override, and locale. 286b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * The locale is used to obtain the symbols used in formatting (e.g., the 287b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * names of the months), but not to provide the pattern. 288b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * <P> 289b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * A numbering system override is a string containing either the name of a known numbering system, 290b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * or a set of field and numbering system pairs that specify which fields are to be formattied with 291b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * the alternate numbering system. For example, to specify that all numeric fields in the specified 292b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * date or time pattern are to be rendered using Thai digits, simply specify the numbering system override 293b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * as "thai". To specify that just the year portion of the date be formatted using Hebrew numbering, 294b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * use the override string "y=hebrew". Numbering system overrides can be combined using a semi-colon 295b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * character in the override string, such as "d=decimal;M=arabic;y=hebrew", etc. 296b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * <P> 297b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * [Note:] Not all locales support SimpleDateFormat; for full generality, 298b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * use the factory methods in the DateFormat class. 299b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @param pattern the pattern for the format. 300b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @param override the numbering system override. 301b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @param locale the given locale. 302b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @param status Output param set to success/failure code. 30350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @stable ICU 4.2 304b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 305b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru SimpleDateFormat(const UnicodeString& pattern, 306b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru const UnicodeString& override, 307b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru const Locale& locale, 308b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru UErrorCode& status); 309b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 310b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru /** 311b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Construct a SimpleDateFormat using the given pattern and locale-specific 312b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * symbol data. The formatter takes ownership of the DateFormatSymbols object; 313b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the caller is no longer responsible for deleting it. 314b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param pattern the given pattern for the format. 315b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param formatDataToAdopt the symbols to be adopted. 316b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status Output param set to success/faulure code. 317b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 318b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 319b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat(const UnicodeString& pattern, 320b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormatSymbols* formatDataToAdopt, 321b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode& status); 322b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 323b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 324b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Construct a SimpleDateFormat using the given pattern and locale-specific 325b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * symbol data. The DateFormatSymbols object is NOT adopted; the caller 326b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * remains responsible for deleting it. 327b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param pattern the given pattern for the format. 328b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param formatData the formatting symbols to be use. 329b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status Output param set to success/faulure code. 330b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 331b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 332b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat(const UnicodeString& pattern, 333b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const DateFormatSymbols& formatData, 334b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode& status); 335b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 336b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 337b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Copy constructor. 338b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 339b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 340b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat(const SimpleDateFormat&); 341b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 342b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 343b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Assignment operator. 344b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 345b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 346b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat& operator=(const SimpleDateFormat&); 347b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 348b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 349b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Destructor. 350b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 351b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 352b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual ~SimpleDateFormat(); 353b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 354b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 355b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Clone this Format object polymorphically. The caller owns the result and 356b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * should delete it when done. 357b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A copy of the object. 358b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 359b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 360b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual Format* clone(void) const; 361b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 362b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 363b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Return true if the given Format objects are semantically equal. Objects 364b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * of different subclasses are considered unequal. 365b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param other the object to be compared with. 366b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return true if the given Format objects are semantically equal. 367b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 368b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 369b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual UBool operator==(const Format& other) const; 370b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 37150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 37250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho using DateFormat::format; 37350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 374b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 375b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Format a date or time, which is the standard millis since 24:00 GMT, Jan 376b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1, 1970. Overrides DateFormat pure virtual method. 377b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 378b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Example: using the US locale: "yyyy.MM.dd e 'at' HH:mm:ss zzz" ->> 379b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1996.07.10 AD at 15:08:56 PDT 380b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 381b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param cal Calendar set to the date and time to be formatted 382b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * into a date/time string. 383b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param appendTo Output parameter to receive result. 384b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Result is appended to existing contents. 385b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param pos The formatting position. On input: an alignment field, 386b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * if desired. On output: the offsets of the alignment field. 387b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return Reference to 'appendTo' parameter. 388b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.1 389b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 390b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual UnicodeString& format( Calendar& cal, 391b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& appendTo, 392b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru FieldPosition& pos) const; 393b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 394b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 395b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Format a date or time, which is the standard millis since 24:00 GMT, Jan 396b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1, 1970. Overrides DateFormat pure virtual method. 397b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 398b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Example: using the US locale: "yyyy.MM.dd e 'at' HH:mm:ss zzz" ->> 399b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 1996.07.10 AD at 15:08:56 PDT 400b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 40150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param cal Calendar set to the date and time to be formatted 40250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * into a date/time string. 40350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param appendTo Output parameter to receive result. 40450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Result is appended to existing contents. 40550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param posIter On return, can be used to iterate over positions 40650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * of fields generated by this format call. Field values 40750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * are defined in UDateFormatField. 40850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param status Input/output param set to success/failure code. 40950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return Reference to 'appendTo' parameter. 41027f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable ICU 4.4 41150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 41250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho virtual UnicodeString& format( Calendar& cal, 41350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString& appendTo, 41450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho FieldPositionIterator* posIter, 41550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode& status) const; 41650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 41750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /** 41850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Format a date or time, which is the standard millis since 24:00 GMT, Jan 41950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * 1, 1970. Overrides DateFormat pure virtual method. 42050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * <P> 42150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Example: using the US locale: "yyyy.MM.dd e 'at' HH:mm:ss zzz" ->> 42250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * 1996.07.10 AD at 15:08:56 PDT 42350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * 424b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param obj A Formattable containing the date-time value to be formatted 425b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * into a date-time string. If the type of the Formattable 426b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * is a numeric type, it is treated as if it were an 427b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * instance of Date. 428b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param appendTo Output parameter to receive result. 429b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Result is appended to existing contents. 430b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param pos The formatting position. On input: an alignment field, 431b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * if desired. On output: the offsets of the alignment field. 43250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param status Input/output param set to success/failure code. 433b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return Reference to 'appendTo' parameter. 434b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 435b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 436b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual UnicodeString& format( const Formattable& obj, 437b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& appendTo, 438b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru FieldPosition& pos, 439b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode& status) const; 440b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 441b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 44250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Format a date or time, which is the standard millis since 24:00 GMT, Jan 44350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * 1, 1970. Overrides DateFormat pure virtual method. 44450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * <P> 44550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Example: using the US locale: "yyyy.MM.dd e 'at' HH:mm:ss zzz" ->> 44650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * 1996.07.10 AD at 15:08:56 PDT 44750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * 44850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param obj A Formattable containing the date-time value to be formatted 44950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * into a date-time string. If the type of the Formattable 45050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * is a numeric type, it is treated as if it were an 45150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * instance of Date. 45250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param appendTo Output parameter to receive result. 45350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Result is appended to existing contents. 45450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param posIter On return, can be used to iterate over positions 45550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * of fields generated by this format call. Field values 45650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * are defined in UDateFormatField. 45750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param status Input/output param set to success/failure code. 45850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return Reference to 'appendTo' parameter. 45927f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable ICU 4.4 46050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 46150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho virtual UnicodeString& format( const Formattable& obj, 46250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString& appendTo, 46350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho FieldPositionIterator* posIter, 46450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode& status) const; 46550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 46650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /** 467b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Redeclared DateFormat method. 468b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param date the Date value to be formatted. 469b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param appendTo Output parameter to receive result. 470b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Result is appended to existing contents. 471b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param fieldPosition The formatting position. On input: an alignment field, 472b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * if desired. On output: the offsets of the alignment field. 473b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return Reference to 'appendTo' parameter. 474b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.1 475b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 476b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& format(UDate date, 477b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& appendTo, 478b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru FieldPosition& fieldPosition) const; 479b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 480b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 481b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Redeclared DateFormat method. 48250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param date the Date value to be formatted. 48350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param appendTo Output parameter to receive result. 48450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Result is appended to existing contents. 48550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param posIter On return, can be used to iterate over positions 48650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * of fields generated by this format call. Field values 48750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * are defined in UDateFormatField. 48850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param status Input/output param set to success/failure code. 48950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return Reference to 'appendTo' parameter. 49027f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable ICU 4.4 49150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 49250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString& format(UDate date, 49350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString& appendTo, 49450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho FieldPositionIterator* posIter, 49550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode& status) const; 49650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 49750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /** 49850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Redeclared DateFormat method. 499b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param obj Object to be formatted. 500b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param appendTo Output parameter to receive result. 501b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Result is appended to existing contents. 502b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status Input/output success/failure code. 503b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return Reference to 'appendTo' parameter. 504b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 505b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 506b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& format(const Formattable& obj, 507b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& appendTo, 508b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode& status) const; 509b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 510b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 511b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Redeclared DateFormat method. 512b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param date Date value to be formatted. 513b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param appendTo Output parameter to receive result. 514b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Result is appended to existing contents. 515b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return Reference to 'appendTo' parameter. 516b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 517b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 518b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& format(UDate date, UnicodeString& appendTo) const; 519b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 520b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 521b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Parse a date/time string beginning at the given parse position. For 522b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * example, a time text "07/10/96 4:5 PM, PDT" will be parsed into a Date 523b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * that is equivalent to Date(837039928046). 524b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 525b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * By default, parsing is lenient: If the input is not in the form used by 526b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * this object's format method but can still be parsed as a date, then the 527b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * parse succeeds. Clients may insist on strict adherence to the format by 528b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * calling setLenient(false). 529b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 530b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param text The date/time string to be parsed 531b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param cal a Calendar set to the date and time to be formatted 532b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * into a date/time string. 533b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param pos On input, the position at which to start parsing; on 534b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * output, the position at which parsing terminated, or the 535b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * start position if the parse failed. 536b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A valid UDate if the input could be parsed. 537b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.1 538b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 539b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual void parse( const UnicodeString& text, 540b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Calendar& cal, 541b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition& pos) const; 542b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 543b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 544b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Parse a date/time string starting at the given parse position. For 545b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * example, a time text "07/10/96 4:5 PM, PDT" will be parsed into a Date 546b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * that is equivalent to Date(837039928046). 547b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 548b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * By default, parsing is lenient: If the input is not in the form used by 549b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * this object's format method but can still be parsed as a date, then the 550b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * parse succeeds. Clients may insist on strict adherence to the format by 551b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * calling setLenient(false). 552b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 553b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @see DateFormat::setLenient(boolean) 554b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 555b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param text The date/time string to be parsed 556b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param pos On input, the position at which to start parsing; on 557b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * output, the position at which parsing terminated, or the 558b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * start position if the parse failed. 559b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A valid UDate if the input could be parsed. 560b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 561b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 562b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate parse( const UnicodeString& text, 563b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition& pos) const; 564b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 565b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 566b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 567b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Parse a date/time string. For example, a time text "07/10/96 4:5 PM, PDT" 568b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * will be parsed into a UDate that is equivalent to Date(837039928046). 569b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Parsing begins at the beginning of the string and proceeds as far as 570b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * possible. Assuming no parse errors were encountered, this function 571b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * doesn't return any information about how much of the string was consumed 572b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * by the parsing. If you need that information, use the version of 573b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * parse() that takes a ParsePosition. 574b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 575b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param text The date/time string to be parsed 576b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status Filled in with U_ZERO_ERROR if the parse was successful, and with 577b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * an error value if there was a parse error. 578b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A valid UDate if the input could be parsed. 579b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 580b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 581b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual UDate parse( const UnicodeString& text, 582b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode& status) const; 583b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 584b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 585b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Set the start UDate used to interpret two-digit year strings. 586b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * When dates are parsed having 2-digit year strings, they are placed within 587b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * a assumed range of 100 years starting on the two digit start date. For 588b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * example, the string "24-Jan-17" may be in the year 1817, 1917, 2017, or 589b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * some other year. SimpleDateFormat chooses a year so that the resultant 590b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * date is on or after the two digit start date and within 100 years of the 591b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * two digit start date. 592b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 593b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * By default, the two digit start date is set to 80 years before the current 594b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * time at which a SimpleDateFormat object is created. 595b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param d start UDate used to interpret two-digit year strings. 596b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status Filled in with U_ZERO_ERROR if the parse was successful, and with 597b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * an error value if there was a parse error. 598b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 599b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 600b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual void set2DigitYearStart(UDate d, UErrorCode& status); 601b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 602b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 603b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Get the start UDate used to interpret two-digit year strings. 604b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * When dates are parsed having 2-digit year strings, they are placed within 605b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * a assumed range of 100 years starting on the two digit start date. For 606b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * example, the string "24-Jan-17" may be in the year 1817, 1917, 2017, or 607b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * some other year. SimpleDateFormat chooses a year so that the resultant 608b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * date is on or after the two digit start date and within 100 years of the 609b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * two digit start date. 610b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P> 611b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * By default, the two digit start date is set to 80 years before the current 612b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * time at which a SimpleDateFormat object is created. 613b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status Filled in with U_ZERO_ERROR if the parse was successful, and with 614b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * an error value if there was a parse error. 615b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 616b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 617b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate get2DigitYearStart(UErrorCode& status) const; 618b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 619b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 620b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Return a pattern string describing this date format. 621b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param result Output param to receive the pattern. 622b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A reference to 'result'. 623b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 624b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 625b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual UnicodeString& toPattern(UnicodeString& result) const; 626b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 627b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 628b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Return a localized pattern string describing this date format. 629b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * In most cases, this will return the same thing as toPattern(), 630b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * but a locale can specify characters to use in pattern descriptions 631b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * in place of the ones described in this class's class documentation. 632b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * (Presumably, letters that would be more mnemonic in that locale's 633b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * language.) This function would produce a pattern using those 634b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * letters. 635b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 636b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param result Receives the localized pattern. 637b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status Output param set to success/failure code on 638b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * exit. If the pattern is invalid, this will be 639b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * set to a failure result. 640b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A reference to 'result'. 641b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 642b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 643b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual UnicodeString& toLocalizedPattern(UnicodeString& result, 644b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode& status) const; 645b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 646b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 647b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Apply the given unlocalized pattern string to this date format. 648b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * (i.e., after this call, this formatter will format dates according to 649b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the new pattern) 650b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 651b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param pattern The pattern to be applied. 652b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 653b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 654b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual void applyPattern(const UnicodeString& pattern); 655b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 656b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 657b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Apply the given localized pattern string to this date format. 658b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * (see toLocalizedPattern() for more information on localized patterns.) 659b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 660b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param pattern The localized pattern to be applied. 661b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status Output param set to success/failure code on 662b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * exit. If the pattern is invalid, this will be 663b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * set to a failure result. 664b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 665b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 666b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual void applyLocalizedPattern(const UnicodeString& pattern, 667b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode& status); 668b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 669b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 670b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Gets the date/time formatting symbols (this is an object carrying 671b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the various strings and other symbols used in formatting: e.g., month 672b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * names and abbreviations, time zone names, AM/PM strings, etc.) 673b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return a copy of the date-time formatting data associated 674b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * with this date-time formatter. 675b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 676b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 677b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual const DateFormatSymbols* getDateFormatSymbols(void) const; 678b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 679b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 680b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Set the date/time formatting symbols. The caller no longer owns the 681b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * DateFormatSymbols object and should not delete it after making this call. 682b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param newFormatSymbols the given date-time formatting symbols to copy. 683b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 684b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 685b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual void adoptDateFormatSymbols(DateFormatSymbols* newFormatSymbols); 686b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 687b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 688b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Set the date/time formatting data. 689b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param newFormatSymbols the given date-time formatting symbols to copy. 690b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 691b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 692b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual void setDateFormatSymbols(const DateFormatSymbols& newFormatSymbols); 693b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 694b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 695b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Return the class ID for this class. This is useful only for comparing to 696b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * a return value from getDynamicClassID(). For example: 697b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <pre> 698b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * . Base* polymorphic_pointer = createPolymorphicObject(); 699b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * . if (polymorphic_pointer->getDynamicClassID() == 700b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * . erived::getStaticClassID()) ... 701b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </pre> 702b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The class ID for all objects of this class. 703b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 704b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 705b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static UClassID U_EXPORT2 getStaticClassID(void); 706b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 707b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 708b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Returns a unique class ID POLYMORPHICALLY. Pure virtual override. This 709b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * method is to implement a simple version of RTTI, since not all C++ 710b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * compilers support genuine RTTI. Polymorphic operator==() and clone() 711b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * methods call this method. 712b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 713b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return The class ID for this object. All objects of a 714b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * given class have the same class ID. Objects of 715b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * other classes have different class IDs. 716b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 717b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 718b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual UClassID getDynamicClassID(void) const; 719b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 720b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 721b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Set the calendar to be used by this date format. Initially, the default 722b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * calendar for the specified or default locale is used. The caller should 723b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * not delete the Calendar object after it is adopted by this call. 724b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Adopting a new calendar will change to the default symbols. 725b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 726b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param calendarToAdopt Calendar object to be adopted. 727b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0 728b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 729b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru virtual void adoptCalendar(Calendar* calendarToAdopt); 730b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 731c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru /** 732c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * This is for ICU internal use only. Please do not use. 733c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * Check whether the 'field' is smaller than all the fields covered in 73450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * pattern, return TRUE if it is. The sequence of calendar field, 735c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * from large to small is: ERA, YEAR, MONTH, DATE, AM_PM, HOUR, MINUTE,... 736c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * @param field the calendar field need to check against 73750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return TRUE if the 'field' is smaller than all the fields 738c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * covered in pattern. FALSE otherwise. 739c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * @internal ICU 4.0 740c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru */ 741c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru UBool isFieldUnitIgnored(UCalendarDateFields field) const; 742c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 743c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 744c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru /** 745c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * This is for ICU internal use only. Please do not use. 746c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * Check whether the 'field' is smaller than all the fields covered in 74750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * pattern, return TRUE if it is. The sequence of calendar field, 748c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * from large to small is: ERA, YEAR, MONTH, DATE, AM_PM, HOUR, MINUTE,... 749c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * @param pattern the pattern to check against 750c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * @param field the calendar field need to check against 75150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return TRUE if the 'field' is smaller than all the fields 752c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * covered in pattern. FALSE otherwise. 753c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * @internal ICU 4.0 754c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru */ 75550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho static UBool isFieldUnitIgnored(const UnicodeString& pattern, 756c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru UCalendarDateFields field); 757c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 758c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 759c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 760c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru /** 761c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * This is for ICU internal use only. Please do not use. 762c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * Get the locale of this simple date formatter. 763c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * It is used in DateIntervalFormat. 764c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * 765c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * @return locale in this simple date formatter 766c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * @internal ICU 4.0 767c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru */ 768c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru const Locale& getSmpFmtLocale(void) const; 769c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 770c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 771b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruprivate: 772b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru friend class DateFormat; 773b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 774b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void initializeDefaultCentury(void); 775b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 776b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat(); // default constructor not implemented 777b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 778b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 779b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Used by the DateFormat factory methods to construct a SimpleDateFormat. 780b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param timeStyle the time style. 781b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param dateStyle the date style. 782b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param locale the given locale. 783b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status Output param set to success/failure code on 784b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * exit. 785b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 786b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat(EStyle timeStyle, EStyle dateStyle, const Locale& locale, UErrorCode& status); 787b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 788b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 789b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Construct a SimpleDateFormat for the given locale. If no resource data 790b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * is available, create an object of last resort, using hard-coded strings. 791b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This is an internal method, called by DateFormat. It should never fail. 792b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param locale the given locale. 793b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status Output param set to success/failure code on 794b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * exit. 795b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 796b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru SimpleDateFormat(const Locale& locale, UErrorCode& status); // Use default pattern 797b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 798b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 79950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Hook called by format(... FieldPosition& ...) and format(...FieldPositionIterator&...) 80050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */ 80150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString& _format(Calendar& cal, UnicodeString& appendTo, FieldPositionHandler& handler, 80250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode& status) const; 80350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 80450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho /** 805b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Called by format() to format a single field. 806b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 807b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param appendTo Output parameter to receive result. 808b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Result is appended to existing contents. 809b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param ch The format character we encountered in the pattern. 810b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param count Number of characters in the current pattern symbol (e.g., 811b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * "yyyy" in the pattern would result in a call to this function 812b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * with ch equal to 'y' and count equal to 4) 81350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param handler Records information about field positions. 814b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @param cal Calendar to use 815b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status Receives a status code, which will be U_ZERO_ERROR if the operation 816b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * succeeds. 817b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 81850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho void subFormat(UnicodeString &appendTo, 81950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UChar ch, 82050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t count, 82150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho FieldPositionHandler& handler, 82250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho Calendar& cal, 82350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode& status) const; // in case of illegal argument 824b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 825b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 826b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Used by subFormat() to format a numeric value. 827b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Appends to toAppendTo a string representation of "value" 828b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * having a number of digits between "minDigits" and 829b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * "maxDigits". Uses the DateFormat's NumberFormat. 830b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * 831b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @param currentNumberFormat 832b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param appendTo Output parameter to receive result. 833b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Formatted number is appended to existing contents. 834b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param value Value to format. 835b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param minDigits Minimum number of digits the result should have 836b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param maxDigits Maximum number of digits the result should have 837b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 83850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho void zeroPaddingNumber(NumberFormat *currentNumberFormat, 83950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString &appendTo, 84050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t value, 84150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t minDigits, 84250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t maxDigits) const; 843b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 844b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 845b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Return true if the given format character, occuring count 846b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * times, represents a numeric field. 847b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 848b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static UBool isNumeric(UChar formatChar, int32_t count); 849b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 850b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 851b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * initializes fCalendar from parameters. Returns fCalendar as a convenience. 852b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param adoptZone Zone to be adopted, or NULL for TimeZone::createDefault(). 853b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param locale Locale of the calendar 854b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status Error code 855b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return the newly constructed fCalendar 856b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 857b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Calendar *initializeCalendar(TimeZone* adoptZone, const Locale& locale, UErrorCode& status); 858b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 859b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 860b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * initializes fSymbols from parameters. 861b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param locale Locale of the symbols 862b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param calendar Alias to Calendar that will be used. 863b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status Error code 864b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 865b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void initializeSymbols(const Locale& locale, Calendar* calendar, UErrorCode& status); 866b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 867b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 868b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Called by several of the constructors to load pattern data and formatting symbols 869b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * out of a resource bundle and initialize the locale based on it. 870b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param timeStyle The time style, as passed to DateFormat::createDateInstance(). 871b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param dateStyle The date style, as passed to DateFormat::createTimeInstance(). 872b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param locale The locale to load the patterns from. 873b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status Filled in with an error code if loading the data from the 874b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * resources fails. 875b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 876b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void construct(EStyle timeStyle, EStyle dateStyle, const Locale& locale, UErrorCode& status); 877b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 878b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 879b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Called by construct() and the various constructors to set up the SimpleDateFormat's 880b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Calendar and NumberFormat objects. 881b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param locale The locale for which we want a Calendar and a NumberFormat. 882b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @param status Filled in with an error code if creating either subobject fails. 883b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 884b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void initialize(const Locale& locale, UErrorCode& status); 885b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 886b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 887b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Private code-size reduction function used by subParse. 888b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param text the time text being parsed. 889b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param start where to start parsing. 890b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param field the date field being parsed. 891b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param stringArray the string array to parsed. 892b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param stringArrayCount the size of the array. 893b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param cal a Calendar set to the date and time to be formatted 894b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * into a date/time string. 895b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return the new start position if matching succeeded; a negative number 896b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * indicating matching failure, otherwise. 897b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 898b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t matchString(const UnicodeString& text, int32_t start, UCalendarDateFields field, 899b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UnicodeString* stringArray, int32_t stringArrayCount, Calendar& cal) const; 900b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 901b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 902b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Private code-size reduction function used by subParse. 903b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param text the time text being parsed. 904b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param start where to start parsing. 905b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param field the date field being parsed. 906b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param stringArray the string array to parsed. 907b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param stringArrayCount the size of the array. 908b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param cal a Calendar set to the date and time to be formatted 909b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * into a date/time string. 910b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return the new start position if matching succeeded; a negative number 911b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * indicating matching failure, otherwise. 912b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 913b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t matchQuarterString(const UnicodeString& text, int32_t start, UCalendarDateFields field, 914b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UnicodeString* stringArray, int32_t stringArrayCount, Calendar& cal) const; 915b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 916b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho /** 917b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Private function used by subParse to match literal pattern text. 918b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * 919b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @param pattern the pattern string 920b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @param patternOffset the starting offset into the pattern text. On 921b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * outupt will be set the offset of the first non-literal character in the pattern 922b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @param text the text being parsed 923b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @param textOffset the starting offset into the text. On output 924b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * will be set to the offset of the character after the match 925b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @param lenient <code>TRUE</code> if the parse is lenient, <code>FALSE</code> otherwise. 926b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * 927b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @return <code>TRUE</code> if the literal text could be matched, <code>FALSE</code> otherwise. 928b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho */ 929b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho static UBool matchLiterals(const UnicodeString &pattern, int32_t &patternOffset, 930b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho const UnicodeString &text, int32_t &textOffset, UBool lenient); 931b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 932b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 933b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Private member function that converts the parsed date strings into 934b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * timeFields. Returns -start (for ParsePosition) if failed. 935b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param text the time text to be parsed. 936b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param start where to start parsing. 937b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param ch the pattern character for the date field text to be parsed. 938b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param count the count of a pattern character. 939b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param obeyCount if true then the count is strictly obeyed. 940b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @param allowNegative 941b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param ambiguousYear If true then the two-digit year == the default start year. 94250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param saveHebrewMonth Used to hang onto month until year is known. 943b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param cal a Calendar set to the date and time to be formatted 944b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * into a date/time string. 945b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * @param patLoc 946b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return the new start position if matching succeeded; a negative number 947b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * indicating matching failure, otherwise. 948b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 949b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t subParse(const UnicodeString& text, int32_t& start, UChar ch, int32_t count, 95050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UBool obeyCount, UBool allowNegative, UBool ambiguousYear[], int32_t& saveHebrewMonth, Calendar& cal, 951b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru int32_t patLoc) const; 952b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 953b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void parseInt(const UnicodeString& text, 954b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Formattable& number, 955b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition& pos, 956b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru UBool allowNegative, 957b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru NumberFormat *fmt) const; 958b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 959b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void parseInt(const UnicodeString& text, 960b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Formattable& number, 961b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t maxDigits, 962b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsePosition& pos, 963b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru UBool allowNegative, 964b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru NumberFormat *fmt) const; 965b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 966b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru int32_t checkIntSuffix(const UnicodeString& text, int32_t start, 967b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru int32_t patLoc, UBool isNegative) const; 968b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 969b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 970b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Translate a pattern, mapping each character in the from string to the 971b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * corresponding character in the to string. Return an error if the original 972b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * pattern contains an unmapped character, or if a quote is unmatched. 973b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Quoted (single quotes only) material is not translated. 974b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param originalPattern the original pattern. 975b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param translatedPattern Output param to receive the translited pattern. 976b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param from the characters to be translited from. 977b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param to the characters to be translited to. 978b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status Receives a status code, which will be U_ZERO_ERROR 979b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * if the operation succeeds. 980b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 981b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static void translatePattern(const UnicodeString& originalPattern, 982b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& translatedPattern, 983b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UnicodeString& from, 984b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru const UnicodeString& to, 985b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode& status); 986b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 987b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 988b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Sets the starting date of the 100-year window that dates with 2-digit years 989b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * are considered to fall within. 990b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param startDate the start date 991b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status Receives a status code, which will be U_ZERO_ERROR 992b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * if the operation succeeds. 993b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 994b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void parseAmbiguousDatesAsAfter(UDate startDate, UErrorCode& status); 995b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 996b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru /** 997b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * Return the length matched by the given affix, or -1 if none. 998b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * Runs of white space in the affix, match runs of white space in 999b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * the input. 1000b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @param affix pattern string, taken as a literal 1001b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @param input input text 1002b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @param pos offset into input at which to begin matching 1003b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @return length of input that matches, or -1 if match failure 1004b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 100550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho int32_t compareSimpleAffix(const UnicodeString& affix, 100650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho const UnicodeString& input, 1007b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru int32_t pos) const; 1008b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 1009b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru /** 1010b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Skip over a run of zero or more Pattern_White_Space characters at 1011b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * pos in text. 1012b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 1013b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho int32_t skipPatternWhiteSpace(const UnicodeString& text, int32_t pos) const; 1014b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 1015b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru /** 1016b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * Skip over a run of zero or more isUWhiteSpace() characters at pos 1017b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * in text. 1018b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 1019b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru int32_t skipUWhiteSpace(const UnicodeString& text, int32_t pos) const; 1020b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 1021b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1022b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Private methods for formatting/parsing GMT string 1023b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1024b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru void appendGMT(NumberFormat *currentNumberFormat,UnicodeString &appendTo, Calendar& cal, UErrorCode& status) const; 1025b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru void formatGMTDefault(NumberFormat *currentNumberFormat,UnicodeString &appendTo, int32_t offset) const; 1026b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t parseGMT(const UnicodeString &text, ParsePosition &pos) const; 1027b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru int32_t parseGMTDefault(const UnicodeString &text, ParsePosition &pos) const; 1028b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBool isDefaultGMTFormat() const; 1029b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1030b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void formatRFC822TZ(UnicodeString &appendTo, int32_t offset) const; 1031b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1032b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1033b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Initialize MessageFormat instances used for GMT formatting/parsing 1034b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1035b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru void initGMTFormatters(UErrorCode &status); 1036b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1037b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1038b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * Initialize NumberFormat instances used for numbering system overrides. 1039b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 1040b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru void initNumberFormatters(const Locale &locale,UErrorCode &status); 1041b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 1042b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru /** 1043b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * Get the numbering system to be used for a particular field. 1044b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 104527f654740f2a26ad62a5c155af9199af9e69b889claireho NumberFormat * getNumberFormatByIndex(UDateFormatField index) const; 1046b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 1047b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru /** 1048b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * Parse the given override string and set up structures for number formats 1049b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 1050b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru void processOverrideString(const Locale &locale, const UnicodeString &str, int8_t type, UErrorCode &status); 1051b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 1052b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru /** 1053b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Used to map pattern characters to Calendar field identifiers. 1054b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1055b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const UCalendarDateFields fgPatternIndexToCalendarField[]; 1056b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1057b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1058b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Map index into pattern character string to DateFormat field number 1059b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1060b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru static const UDateFormatField fgPatternIndexToDateFormatField[]; 1061b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1062b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1063b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * Lazy TimeZoneFormat instantiation, semantically const 1064b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho */ 1065b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho TimeZoneFormat *tzFormat() const; 1066b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1067b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho /** 1068c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * Used to map Calendar field to field level. 1069c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * The larger the level, the smaller the field unit. 1070c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * For example, UCAL_ERA level is 0, UCAL_YEAR level is 10, 1071c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru * UCAL_MONTH level is 20. 1072c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru */ 1073c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru static const int32_t fgCalendarFieldToLevel[]; 1074c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru static const int32_t fgPatternCharToLevel[]; 1075c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru 1076c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru /** 1077b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The formatting pattern for this formatter. 1078b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1079b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString fPattern; 1080b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1081b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1082b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * The numbering system override for dates. 1083b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 1084b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru UnicodeString fDateOverride; 1085b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 1086b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru /** 1087b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * The numbering system override for times. 1088b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru */ 1089b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru UnicodeString fTimeOverride; 1090b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 109150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1092b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru /** 1093b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * The original locale used (for reloading symbols) 1094b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1095b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru Locale fLocale; 1096b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1097b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1098b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A pointer to an object containing the strings to use in formatting (e.g., 1099b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * month and day names, AM and PM strings, time zone names, etc.) 1100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru DateFormatSymbols* fSymbols; // Owned 1102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1104b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho * The time zone formatter 1105b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho */ 1106b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho TimeZoneFormat* fTimeZoneFormat; 1107b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho 1108b26ce3a7367e4ed2ee7ddddcdc3f3d3377a455c2claireho /** 1109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If dates have ambiguous years, we map them into the century starting 1110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * at defaultCenturyStart, which may be any date. If defaultCenturyStart is 1111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * set to SYSTEM_DEFAULT_CENTURY, which it is by default, then the system 1112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * values are used. The instance values defaultCenturyStart and 1113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * defaultCenturyStartYear are only used if explicitly set by the user 1114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * through the API method parseAmbiguousDatesAsAfter(). 1115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UDate fDefaultCenturyStart; 1117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /** 1119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * See documentation for defaultCenturyStart. 1120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /*transient*/ int32_t fDefaultCenturyStartYear; 1122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru enum ParsedTZType { 1124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TZTYPE_UNK, 1125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TZTYPE_STD, 1126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru TZTYPE_DST 1127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru }; 1128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru ParsedTZType tztype; // here to avoid api change 1130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1131b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru typedef struct NSOverride { 1132b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru NumberFormat *nf; 1133b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru int32_t hash; 1134b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru NSOverride *next; 1135b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru } NSOverride; 1136b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 1137b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru /* 1138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * MessageFormat instances used for localized GMT format 1139b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */ 1140b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru enum { 1141b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru kGMTNegativeHMS = 0, 1142b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru kGMTNegativeHM, 1143b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru kGMTPositiveHMS, 1144b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru kGMTPositiveHM, 1145b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 1146b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru kNumGMTFormatters 1147b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru }; 1148b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru enum { 1149b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru kGMTNegativeHMSMinLenIdx = 0, 1150b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru kGMTPositiveHMSMinLenIdx, 1151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1152b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru kNumGMTFormatMinLengths 1153b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru }; 1154b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 1155b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru MessageFormat **fGMTFormatters; 1156b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru // If a GMT hour format has a second field, we need to make sure 1157b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru // the length of input localized GMT string must match the expected 1158b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru // length. Otherwise, sub DateForamt handling offset format may 1159b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru // unexpectedly success parsing input GMT string without second field. 1160b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru // See #6880 about this issue. 1161b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru // TODO: SimpleDateFormat should provide an option to invalidate 116250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // 1163b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru int32_t fGMTFormatHmsMinLen[kNumGMTFormatMinLengths]; 1164b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 1165b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru NumberFormat **fNumberFormatters; 1166b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru 1167b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru NSOverride *fOverrideList; 116850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 1169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UBool fHaveDefaultCentury; 1170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru}; 1171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruinline UDate 1173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruSimpleDateFormat::get2DigitYearStart(UErrorCode& /*status*/) const 1174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru{ 1175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return fDefaultCenturyStart; 1176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1178b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruinline UnicodeString& 1179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruSimpleDateFormat::format(const Formattable& obj, 1180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& appendTo, 1181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UErrorCode& status) const { 1182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Don't use Format:: - use immediate base class only, 1183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // in case immediate base modifies behavior later. 1184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return DateFormat::format(obj, appendTo, status); 1185b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1186b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1187b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruinline UnicodeString& 118850294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoSimpleDateFormat::format(const Formattable& obj, 118950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString& appendTo, 119050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho FieldPosition& pos, 119150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode& status) const 119250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho{ 119350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // Don't use Format:: - use immediate base class only, 119450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // in case immediate base modifies behavior later. 119550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return DateFormat::format(obj, appendTo, pos, status); 119650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 119750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 119850294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoinline UnicodeString& 119950294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoSimpleDateFormat::format(const Formattable& obj, 120050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString& appendTo, 120150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho FieldPositionIterator* posIter, 120250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode& status) const 120350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho{ 120450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // Don't use Format:: - use immediate base class only, 120550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // in case immediate base modifies behavior later. 120650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return DateFormat::format(obj, appendTo, posIter, status); 120750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 120850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 120950294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoinline UnicodeString& 1210b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruSimpleDateFormat::format(UDate date, 1211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru UnicodeString& appendTo, 1212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru FieldPosition& fieldPosition) const { 1213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // Don't use Format:: - use immediate base class only, 1214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru // in case immediate base modifies behavior later. 1215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return DateFormat::format(date, appendTo, fieldPosition); 1216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1218b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruinline UnicodeString& 121950294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoSimpleDateFormat::format(UDate date, 122050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UnicodeString& appendTo, 122150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho FieldPositionIterator* posIter, 122250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho UErrorCode& status) const { 122350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // Don't use Format:: - use immediate base class only, 122450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho // in case immediate base modifies behavior later. 122550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho return DateFormat::format(date, appendTo, posIter, status); 122650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho} 122750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho 122850294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoinline UnicodeString& 1229b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruSimpleDateFormat::format(UDate date, UnicodeString& appendTo) const { 1230b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru return DateFormat::format(date, appendTo); 1231b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} 1232b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1233b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_NAMESPACE_END 1234b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1235b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_FORMATTING */ 1236b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru 1237b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif // _SMPDTFMT 1238b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru//eof 1239