datefmt.h

Go to the documentation of this file.
00001 /* 00002 ******************************************************************************** 00003 * Copyright (C) 1997-2004, 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/udat.h" 00027 #include "unicode/calendar.h" 00028 #include "unicode/numfmt.h" 00029 #include "unicode/format.h" 00030 #include "unicode/locid.h" 00031 00032 U_NAMESPACE_BEGIN 00033 00034 class TimeZone; 00035 00132 class U_I18N_API DateFormat : public Format { 00133 public: 00134 00142 enum EStyle 00143 { 00144 kNone = -1, 00145 00146 kFull = 0, 00147 kLong = 1, 00148 kMedium = 2, 00149 kShort = 3, 00150 00151 kDateOffset = kShort + 1, 00152 // kFull + kDateOffset = 4 00153 // kLong + kDateOffset = 5 00154 // kMedium + kDateOffset = 6 00155 // kShort + kDateOffset = 7 00156 00157 kDateTime = 8, 00158 00159 kDefault = kMedium, 00160 00161 00162 00167 FULL = kFull, 00168 LONG = kLong, 00169 MEDIUM = kMedium, 00170 SHORT = kShort, 00171 DEFAULT = kDefault, 00172 DATE_OFFSET = kDateOffset, 00173 NONE = kNone, 00174 DATE_TIME = kDateTime 00175 }; 00176 00181 virtual ~DateFormat(); 00182 00187 virtual UBool operator==(const Format&) const; 00188 00203 virtual UnicodeString& format(const Formattable& obj, 00204 UnicodeString& appendTo, 00205 FieldPosition& pos, 00206 UErrorCode& status) const; 00207 00237 virtual UnicodeString& format( Calendar& cal, 00238 UnicodeString& appendTo, 00239 FieldPosition& fieldPosition) const = 0; 00240 00268 UnicodeString& format( UDate date, 00269 UnicodeString& appendTo, 00270 FieldPosition& fieldPosition) const; 00271 00283 UnicodeString& format(UDate date, UnicodeString& appendTo) const; 00284 00295 UnicodeString& format(const Formattable& obj, 00296 UnicodeString& appendTo, 00297 UErrorCode& status) const; 00298 00309 virtual UDate parse( const UnicodeString& text, 00310 UErrorCode& status) const; 00311 00333 virtual void parse( const UnicodeString& text, 00334 Calendar& cal, 00335 ParsePosition& pos) const = 0; 00336 00356 UDate parse( const UnicodeString& text, 00357 ParsePosition& pos) const; 00358 00385 virtual void parseObject(const UnicodeString& source, 00386 Formattable& result, 00387 ParsePosition& parse_pos) const; 00388 00396 static DateFormat* createInstance(void); 00397 00408 static DateFormat* createTimeInstance(EStyle style = kDefault, 00409 const Locale& aLocale = Locale::getDefault()); 00410 00421 static DateFormat* createDateInstance(EStyle style = kDefault, 00422 const Locale& aLocale = Locale::getDefault()); 00423 00436 static DateFormat* createDateTimeInstance(EStyle dateStyle = kDefault, 00437 EStyle timeStyle = kDefault, 00438 const Locale& aLocale = Locale::getDefault()); 00439 00447 static const Locale* getAvailableLocales(int32_t& count); 00448 00453 virtual UBool isLenient(void) const; 00454 00465 virtual void setLenient(UBool lenient); 00466 00472 virtual const Calendar* getCalendar(void) const; 00473 00483 virtual void adoptCalendar(Calendar* calendarToAdopt); 00484 00492 virtual void setCalendar(const Calendar& newCalendar); 00493 00494 00501 virtual const NumberFormat* getNumberFormat(void) const; 00502 00509 virtual void adoptNumberFormat(NumberFormat* formatToAdopt); 00510 00516 virtual void setNumberFormat(const NumberFormat& newNumberFormat); 00517 00523 virtual const TimeZone& getTimeZone(void) const; 00524 00531 virtual void adoptTimeZone(TimeZone* zoneToAdopt); 00532 00538 virtual void setTimeZone(const TimeZone& zone); 00539 00540 protected: 00547 DateFormat(); 00548 00553 DateFormat(const DateFormat&); 00554 00559 DateFormat& operator=(const DateFormat&); 00560 00567 Calendar* fCalendar; 00568 00575 NumberFormat* fNumberFormat; 00576 00577 private: 00586 static DateFormat* create(EStyle timeStyle, EStyle dateStyle, const Locale&); 00587 00588 public: 00594 enum EField 00595 { 00596 // Obsolete; use UDateFormatField instead 00597 kEraField = UDAT_ERA_FIELD, 00598 kYearField = UDAT_YEAR_FIELD, 00599 kMonthField = UDAT_MONTH_FIELD, 00600 kDateField = UDAT_DATE_FIELD, 00601 kHourOfDay1Field = UDAT_HOUR_OF_DAY1_FIELD, 00602 kHourOfDay0Field = UDAT_HOUR_OF_DAY0_FIELD, 00603 kMinuteField = UDAT_MINUTE_FIELD, 00604 kSecondField = UDAT_SECOND_FIELD, 00605 kMillisecondField = UDAT_FRACTIONAL_SECOND_FIELD, 00606 kDayOfWeekField = UDAT_DAY_OF_WEEK_FIELD, 00607 kDayOfYearField = UDAT_DAY_OF_YEAR_FIELD, 00608 kDayOfWeekInMonthField = UDAT_DAY_OF_WEEK_IN_MONTH_FIELD, 00609 kWeekOfYearField = UDAT_WEEK_OF_YEAR_FIELD, 00610 kWeekOfMonthField = UDAT_WEEK_OF_MONTH_FIELD, 00611 kAmPmField = UDAT_AM_PM_FIELD, 00612 kHour1Field = UDAT_HOUR1_FIELD, 00613 kHour0Field = UDAT_HOUR0_FIELD, 00614 kTimezoneField = UDAT_TIMEZONE_FIELD, 00615 kYearWOYField = UDAT_YEAR_WOY_FIELD, 00616 kDOWLocalField = UDAT_DOW_LOCAL_FIELD, 00617 kExtendedYearField = UDAT_EXTENDED_YEAR_FIELD, 00618 kJulianDayField = UDAT_JULIAN_DAY_FIELD, 00619 kMillisecondsInDayField = UDAT_MILLISECONDS_IN_DAY_FIELD, 00620 00621 // Obsolete; use UDateFormatField instead 00622 ERA_FIELD = UDAT_ERA_FIELD, 00623 YEAR_FIELD = UDAT_YEAR_FIELD, 00624 MONTH_FIELD = UDAT_MONTH_FIELD, 00625 DATE_FIELD = UDAT_DATE_FIELD, 00626 HOUR_OF_DAY1_FIELD = UDAT_HOUR_OF_DAY1_FIELD, 00627 HOUR_OF_DAY0_FIELD = UDAT_HOUR_OF_DAY0_FIELD, 00628 MINUTE_FIELD = UDAT_MINUTE_FIELD, 00629 SECOND_FIELD = UDAT_SECOND_FIELD, 00630 MILLISECOND_FIELD = UDAT_FRACTIONAL_SECOND_FIELD, 00631 DAY_OF_WEEK_FIELD = UDAT_DAY_OF_WEEK_FIELD, 00632 DAY_OF_YEAR_FIELD = UDAT_DAY_OF_YEAR_FIELD, 00633 DAY_OF_WEEK_IN_MONTH_FIELD = UDAT_DAY_OF_WEEK_IN_MONTH_FIELD, 00634 WEEK_OF_YEAR_FIELD = UDAT_WEEK_OF_YEAR_FIELD, 00635 WEEK_OF_MONTH_FIELD = UDAT_WEEK_OF_MONTH_FIELD, 00636 AM_PM_FIELD = UDAT_AM_PM_FIELD, 00637 HOUR1_FIELD = UDAT_HOUR1_FIELD, 00638 HOUR0_FIELD = UDAT_HOUR0_FIELD, 00639 TIMEZONE_FIELD = UDAT_TIMEZONE_FIELD 00640 }; 00641 }; 00642 00643 inline UnicodeString& 00644 DateFormat::format(const Formattable& obj, 00645 UnicodeString& appendTo, 00646 UErrorCode& status) const { 00647 return Format::format(obj, appendTo, status); 00648 } 00649 U_NAMESPACE_END 00650 00651 #endif /* #if !UCONFIG_NO_FORMATTING */ 00652 00653 #endif // _DATEFMT 00654 //eof

Generated on Fri Jun 18 12:35:57 2004 for ICU by doxygen 1.3.7