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

datefmt.h

00001 /* 00002 ******************************************************************************** 00003 * Copyright (C) 1997-2001, 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 #include "unicode/calendar.h" 00024 #include "unicode/numfmt.h" 00025 #include "unicode/format.h" 00026 #include "unicode/locid.h" 00027 00028 U_NAMESPACE_BEGIN 00029 00030 class TimeZone; 00031 00124 class U_I18N_API DateFormat : public Format { 00125 public: 00136 enum EField 00137 { 00138 kEraField = 0, // ERA field alignment. 00139 kYearField, // YEAR field alignment. 00140 kMonthField, // MONTH field alignment. 00141 kDateField, // DATE field alignment. 00142 kHourOfDay1Field, // One-based HOUR_OF_DAY field alignment. 00143 // kHourOfDay1Field is used for the one-based 24-hour clock. 00144 // For example, 23:59 + 01:00 results in 24:59. 00145 kHourOfDay0Field, // Zero-based HOUR_OF_DAY field alignment. 00146 // HOUR_OF_DAY0_FIELD is used for the zero-based 24-hour clock. 00147 // For example, 23:59 + 01:00 results in 00:59. 00148 kMinuteField, // MINUTE field alignment. 00149 kSecondField, // SECOND field alignment. 00150 kMillisecondField, // MILLISECOND field alignment. 00151 kDayOfWeekField, // DAY_OF_WEEK field alignment. 00152 kDayOfYearField, // DAY_OF_YEAR field alignment. 00153 kDayOfWeekInMonthField,// DAY_OF_WEEK_IN_MONTH field alignment. 00154 kWeekOfYearField, // WEEK_OF_YEAR field alignment. 00155 kWeekOfMonthField, // WEEK_OF_MONTH field alignment. 00156 kAmPmField, // AM_PM field alignment. 00157 kHour1Field, // One-based HOUR field alignment. 00158 // HOUR1_FIELD is used for the one-based 12-hour clock. 00159 // For example, 11:30 PM + 1 hour results in 12:30 AM. 00160 kHour0Field, // Zero-based HOUR field alignment. 00161 // HOUR0_FIELD is used for the zero-based 12-hour clock. 00162 // For example, 11:30 PM + 1 hour results in 00:30 AM. 00163 kTimezoneField, // TIMEZONE field alignment. 00164 kYearWOYField, // Corrected year for week representation 00165 kDOWLocalField, // localized day of week 00166 00167 00168 00173 ERA_FIELD = kEraField, 00174 YEAR_FIELD = kYearField, 00175 MONTH_FIELD = kMonthField, 00176 DATE_FIELD = kDateField, 00177 HOUR_OF_DAY1_FIELD = kHourOfDay1Field, 00178 HOUR_OF_DAY0_FIELD = kHourOfDay0Field, 00179 MINUTE_FIELD = kMinuteField, 00180 SECOND_FIELD = kSecondField, 00181 MILLISECOND_FIELD = kMillisecondField, 00182 DAY_OF_WEEK_FIELD = kDayOfWeekField, 00183 DAY_OF_YEAR_FIELD = kDayOfYearField, 00184 DAY_OF_WEEK_IN_MONTH_FIELD = kDayOfWeekInMonthField, 00185 WEEK_OF_YEAR_FIELD = kWeekOfYearField, 00186 WEEK_OF_MONTH_FIELD = kWeekOfMonthField, 00187 AM_PM_FIELD = kAmPmField, 00188 HOUR1_FIELD = kHour1Field, 00189 HOUR0_FIELD = kHour0Field, 00190 TIMEZONE_FIELD = kTimezoneField 00191 00192 }; 00193 00200 enum EStyle 00201 { 00202 kNone = -1, 00203 00204 kFull = 0, 00205 kLong = 1, 00206 kMedium = 2, 00207 kShort = 3, 00208 00209 kDateOffset = kShort + 1, 00210 // kFull + kDateOffset = 4 00211 // kLong + kDateOffset = 5 00212 // kMedium + kDateOffset = 6 00213 // kShort + kDateOffset = 7 00214 00215 kDateTime = 8, 00216 00217 kDefault = kMedium, 00218 00219 00220 00225 FULL = kFull, 00226 LONG = kLong, 00227 MEDIUM = kMedium, 00228 SHORT = kShort, 00229 DEFAULT = kDefault, 00230 DATE_OFFSET = kDateOffset, 00231 NONE = kNone, 00232 DATE_TIME = kDateTime 00233 }; 00234 00239 virtual ~DateFormat(); 00240 00245 virtual UBool operator==(const Format&) const; 00246 00262 virtual UnicodeString& format(const Formattable& obj, 00263 UnicodeString& toAppendTo, 00264 FieldPosition& pos, 00265 UErrorCode& status) const; 00266 00296 virtual UnicodeString& format( Calendar& cal, 00297 UnicodeString& toAppendTo, 00298 FieldPosition& fieldPosition) const = 0; 00299 00327 UnicodeString& format( UDate date, 00328 UnicodeString& toAppendTo, 00329 FieldPosition& fieldPosition) const; 00330 00341 UnicodeString& format(UDate date, UnicodeString& result) const; 00342 00347 UnicodeString& format(const Formattable& obj, 00348 UnicodeString& result, 00349 UErrorCode& status) const; 00350 00361 virtual UDate parse( const UnicodeString& text, 00362 UErrorCode& status) const; 00363 00383 virtual void parse( const UnicodeString& text, 00384 Calendar& cal, 00385 ParsePosition& pos) const = 0; 00386 00406 UDate parse( const UnicodeString& text, 00407 ParsePosition& pos) const; 00408 00435 virtual void parseObject(const UnicodeString& source, 00436 Formattable& result, 00437 ParsePosition& parse_pos) const; 00438 00446 static DateFormat* createInstance(void); 00447 00458 static DateFormat* createTimeInstance(EStyle style = kDefault, 00459 const Locale& aLocale = Locale::getDefault()); 00460 00471 static DateFormat* createDateInstance(EStyle style = kDefault, 00472 const Locale& aLocale = Locale::getDefault()); 00473 00486 static DateFormat* createDateTimeInstance(EStyle dateStyle = kDefault, 00487 EStyle timeStyle = kDefault, 00488 const Locale& aLocale = Locale::getDefault()); 00489 00497 static const Locale* getAvailableLocales(int32_t& count); 00498 00503 virtual UBool isLenient(void) const; 00504 00513 virtual void setLenient(UBool lenient); 00514 00520 virtual const Calendar* getCalendar(void) const; 00521 00528 virtual void adoptCalendar(Calendar* calendarToAdopt); 00529 00535 virtual void setCalendar(const Calendar& newCalendar); 00536 00537 00544 virtual const NumberFormat* getNumberFormat(void) const; 00545 00552 virtual void adoptNumberFormat(NumberFormat* formatToAdopt); 00553 00559 virtual void setNumberFormat(const NumberFormat& newNumberFormat); 00560 00566 virtual const TimeZone& getTimeZone(void) const; 00567 00574 virtual void adoptTimeZone(TimeZone* zoneToAdopt); 00575 00581 virtual void setTimeZone(const TimeZone& zone); 00582 00583 00584 protected: 00591 DateFormat(); 00592 00597 DateFormat(const DateFormat&); 00598 00603 DateFormat& operator=(const DateFormat&); 00604 00610 Calendar* fCalendar; 00611 00617 NumberFormat* fNumberFormat; 00618 00619 private: 00628 static DateFormat* create(EStyle timeStyle, EStyle dateStyle, const Locale&); 00629 }; 00630 00631 inline UnicodeString& 00632 DateFormat::format(const Formattable& obj, 00633 UnicodeString& result, 00634 UErrorCode& status) const { 00635 return Format::format(obj, result, status); 00636 } 00637 U_NAMESPACE_END 00638 00639 #endif // _DATEFMT 00640 //eof

Generated on Fri Aug 13 09:53:50 2004 for ICU 2.1 by doxygen 1.3.7