Main Page | Class Hierarchy | Alphabetical List | Data Structures | File List | Data Fields | Globals | Related Pages

datefmt.h

00001 /* 00002 ******************************************************************************** 00003 * Copyright (C) 1997-2003, International Business Machines 00004 * Corporation and others. All Rights Reserved. 00005 ******************************************************************************** 00006 * 00007 * File DATEFMT.H 00008 * 00009 * Modification History: 00010 * 00011 * Date Name Description 00012 * 02/19/97 aliu Converted from java. 00013 * 04/01/97 aliu Added support for centuries. 00014 * 07/23/98 stephen JDK 1.2 sync 00015 * 11/15/99 weiv Added support for week of year/day of week formatting 00016 ******************************************************************************** 00017 */ 00018 00019 #ifndef DATEFMT_H 00020 #define DATEFMT_H 00021 00022 #include "unicode/utypes.h" 00023 00024 #if !UCONFIG_NO_FORMATTING 00025 00026 #include "unicode/calendar.h" 00027 #include "unicode/numfmt.h" 00028 #include "unicode/format.h" 00029 #include "unicode/locid.h" 00030 00031 U_NAMESPACE_BEGIN 00032 00033 class TimeZone; 00034 00127 class U_I18N_API DateFormat : public Format { 00128 public: 00140 enum EField 00141 { 00142 kEraField = 0, // ERA field alignment. 00143 kYearField, // YEAR field alignment. 00144 kMonthField, // MONTH field alignment. 00145 kDateField, // DATE field alignment. 00146 kHourOfDay1Field, // One-based HOUR_OF_DAY field alignment. 00147 // kHourOfDay1Field is used for the one-based 24-hour clock. 00148 // For example, 23:59 + 01:00 results in 24:59. 00149 kHourOfDay0Field, // Zero-based HOUR_OF_DAY field alignment. 00150 // HOUR_OF_DAY0_FIELD is used for the zero-based 24-hour clock. 00151 // For example, 23:59 + 01:00 results in 00:59. 00152 kMinuteField, // MINUTE field alignment. 00153 kSecondField, // SECOND field alignment. 00154 kMillisecondField, // MILLISECOND field alignment. 00155 kDayOfWeekField, // DAY_OF_WEEK field alignment. 00156 kDayOfYearField, // DAY_OF_YEAR field alignment. 00157 kDayOfWeekInMonthField,// DAY_OF_WEEK_IN_MONTH field alignment. 00158 kWeekOfYearField, // WEEK_OF_YEAR field alignment. 00159 kWeekOfMonthField, // WEEK_OF_MONTH field alignment. 00160 kAmPmField, // AM_PM field alignment. 00161 kHour1Field, // One-based HOUR field alignment. 00162 // HOUR1_FIELD is used for the one-based 12-hour clock. 00163 // For example, 11:30 PM + 1 hour results in 12:30 AM. 00164 kHour0Field, // Zero-based HOUR field alignment. 00165 // HOUR0_FIELD is used for the zero-based 12-hour clock. 00166 // For example, 11:30 PM + 1 hour results in 00:30 AM. 00167 kTimezoneField, // TIMEZONE field alignment. 00168 kYearWOYField, // Corrected year for week representation 00169 kDOWLocalField, // localized day of week 00170 kExtendedYearField, 00171 kJulianDayField, 00172 kMillisecondsInDayField, 00173 00174 00179 ERA_FIELD = kEraField, 00180 YEAR_FIELD = kYearField, 00181 MONTH_FIELD = kMonthField, 00182 DATE_FIELD = kDateField, 00183 HOUR_OF_DAY1_FIELD = kHourOfDay1Field, 00184 HOUR_OF_DAY0_FIELD = kHourOfDay0Field, 00185 MINUTE_FIELD = kMinuteField, 00186 SECOND_FIELD = kSecondField, 00187 MILLISECOND_FIELD = kMillisecondField, 00188 DAY_OF_WEEK_FIELD = kDayOfWeekField, 00189 DAY_OF_YEAR_FIELD = kDayOfYearField, 00190 DAY_OF_WEEK_IN_MONTH_FIELD = kDayOfWeekInMonthField, 00191 WEEK_OF_YEAR_FIELD = kWeekOfYearField, 00192 WEEK_OF_MONTH_FIELD = kWeekOfMonthField, 00193 AM_PM_FIELD = kAmPmField, 00194 HOUR1_FIELD = kHour1Field, 00195 HOUR0_FIELD = kHour0Field, 00196 TIMEZONE_FIELD = kTimezoneField 00197 00198 }; 00199 00207 enum EStyle 00208 { 00209 kNone = -1, 00210 00211 kFull = 0, 00212 kLong = 1, 00213 kMedium = 2, 00214 kShort = 3, 00215 00216 kDateOffset = kShort + 1, 00217 // kFull + kDateOffset = 4 00218 // kLong + kDateOffset = 5 00219 // kMedium + kDateOffset = 6 00220 // kShort + kDateOffset = 7 00221 00222 kDateTime = 8, 00223 00224 kDefault = kMedium, 00225 00226 00227 00232 FULL = kFull, 00233 LONG = kLong, 00234 MEDIUM = kMedium, 00235 SHORT = kShort, 00236 DEFAULT = kDefault, 00237 DATE_OFFSET = kDateOffset, 00238 NONE = kNone, 00239 DATE_TIME = kDateTime 00240 }; 00241 00246 virtual ~DateFormat(); 00247 00252 virtual UBool operator==(const Format&) const; 00253 00268 virtual UnicodeString& format(const Formattable& obj, 00269 UnicodeString& appendTo, 00270 FieldPosition& pos, 00271 UErrorCode& status) const; 00272 00302 virtual UnicodeString& format( Calendar& cal, 00303 UnicodeString& appendTo, 00304 FieldPosition& fieldPosition) const = 0; 00305 00333 UnicodeString& format( UDate date, 00334 UnicodeString& appendTo, 00335 FieldPosition& fieldPosition) const; 00336 00348 UnicodeString& format(UDate date, UnicodeString& appendTo) const; 00349 00360 UnicodeString& format(const Formattable& obj, 00361 UnicodeString& appendTo, 00362 UErrorCode& status) const; 00363 00374 virtual UDate parse( const UnicodeString& text, 00375 UErrorCode& status) const; 00376 00398 virtual void parse( const UnicodeString& text, 00399 Calendar& cal, 00400 ParsePosition& pos) const = 0; 00401 00421 UDate parse( const UnicodeString& text, 00422 ParsePosition& pos) const; 00423 00450 virtual void parseObject(const UnicodeString& source, 00451 Formattable& result, 00452 ParsePosition& parse_pos) const; 00453 00461 static DateFormat* createInstance(void); 00462 00473 static DateFormat* createTimeInstance(EStyle style = kDefault, 00474 const Locale& aLocale = Locale::getDefault()); 00475 00486 static DateFormat* createDateInstance(EStyle style = kDefault, 00487 const Locale& aLocale = Locale::getDefault()); 00488 00501 static DateFormat* createDateTimeInstance(EStyle dateStyle = kDefault, 00502 EStyle timeStyle = kDefault, 00503 const Locale& aLocale = Locale::getDefault()); 00504 00512 static const Locale* getAvailableLocales(int32_t& count); 00513 00518 virtual UBool isLenient(void) const; 00519 00530 virtual void setLenient(UBool lenient); 00531 00537 virtual const Calendar* getCalendar(void) const; 00538 00548 virtual void adoptCalendar(Calendar* calendarToAdopt); 00549 00557 virtual void setCalendar(const Calendar& newCalendar); 00558 00559 00566 virtual const NumberFormat* getNumberFormat(void) const; 00567 00574 virtual void adoptNumberFormat(NumberFormat* formatToAdopt); 00575 00581 virtual void setNumberFormat(const NumberFormat& newNumberFormat); 00582 00588 virtual const TimeZone& getTimeZone(void) const; 00589 00596 virtual void adoptTimeZone(TimeZone* zoneToAdopt); 00597 00603 virtual void setTimeZone(const TimeZone& zone); 00604 00605 protected: 00612 DateFormat(); 00613 00618 DateFormat(const DateFormat&); 00619 00624 DateFormat& operator=(const DateFormat&); 00625 00632 Calendar* fCalendar; 00633 00640 NumberFormat* fNumberFormat; 00641 00642 private: 00651 static DateFormat* create(EStyle timeStyle, EStyle dateStyle, const Locale&); 00652 }; 00653 00654 inline UnicodeString& 00655 DateFormat::format(const Formattable& obj, 00656 UnicodeString& appendTo, 00657 UErrorCode& status) const { 00658 return Format::format(obj, appendTo, status); 00659 } 00660 U_NAMESPACE_END 00661 00662 #endif /* #if !UCONFIG_NO_FORMATTING */ 00663 00664 #endif // _DATEFMT 00665 //eof

Generated on Wed Jul 28 09:15:54 2004 for ICU 2.8 by doxygen 1.3.7