|
ICU 51.2
51.2
|
00001 /* 00002 ******************************************************************************** 00003 * Copyright (C) 1997-2012, 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 00037 U_NAMESPACE_BEGIN 00038 00039 class TimeZone; 00040 class DateTimePatternGenerator; 00041 00138 class U_I18N_API DateFormat : public Format { 00139 public: 00140 00148 enum EStyle 00149 { 00150 kNone = -1, 00151 00152 kFull = 0, 00153 kLong = 1, 00154 kMedium = 2, 00155 kShort = 3, 00156 00157 kDateOffset = kShort + 1, 00158 // kFull + kDateOffset = 4 00159 // kLong + kDateOffset = 5 00160 // kMedium + kDateOffset = 6 00161 // kShort + kDateOffset = 7 00162 00163 kDateTime = 8, 00164 // Default DateTime 00165 00166 kDateTimeOffset = kDateTime + 1, 00167 // kFull + kDateTimeOffset = 9 00168 // kLong + kDateTimeOffset = 10 00169 // kMedium + kDateTimeOffset = 11 00170 // kShort + kDateTimeOffset = 12 00171 00172 // relative dates 00173 kRelative = (1 << 7), 00174 00175 kFullRelative = (kFull | kRelative), 00176 00177 kLongRelative = kLong | kRelative, 00178 00179 kMediumRelative = kMedium | kRelative, 00180 00181 kShortRelative = kShort | kRelative, 00182 00183 00184 kDefault = kMedium, 00185 00186 00187 00192 FULL = kFull, 00193 LONG = kLong, 00194 MEDIUM = kMedium, 00195 SHORT = kShort, 00196 DEFAULT = kDefault, 00197 DATE_OFFSET = kDateOffset, 00198 NONE = kNone, 00199 DATE_TIME = kDateTime 00200 }; 00201 00206 virtual ~DateFormat(); 00207 00212 virtual UBool operator==(const Format&) const; 00213 00214 00215 using Format::format; 00216 00231 virtual UnicodeString& format(const Formattable& obj, 00232 UnicodeString& appendTo, 00233 FieldPosition& pos, 00234 UErrorCode& status) const; 00235 00251 virtual UnicodeString& format(const Formattable& obj, 00252 UnicodeString& appendTo, 00253 FieldPositionIterator* posIter, 00254 UErrorCode& status) const; 00288 virtual UnicodeString& format( Calendar& cal, 00289 UnicodeString& appendTo, 00290 FieldPosition& fieldPosition) const = 0; 00291 00310 virtual UnicodeString& format(Calendar& cal, 00311 UnicodeString& appendTo, 00312 FieldPositionIterator* posIter, 00313 UErrorCode& status) const; 00341 UnicodeString& format( UDate date, 00342 UnicodeString& appendTo, 00343 FieldPosition& fieldPosition) const; 00344 00358 UnicodeString& format(UDate date, 00359 UnicodeString& appendTo, 00360 FieldPositionIterator* posIter, 00361 UErrorCode& status) const; 00373 UnicodeString& format(UDate date, UnicodeString& appendTo) const; 00374 00385 UnicodeString& format(const Formattable& obj, 00386 UnicodeString& appendTo, 00387 UErrorCode& status) const; 00388 00423 virtual UDate parse( const UnicodeString& text, 00424 UErrorCode& status) const; 00425 00452 virtual void parse( const UnicodeString& text, 00453 Calendar& cal, 00454 ParsePosition& pos) const = 0; 00455 00486 UDate parse( const UnicodeString& text, 00487 ParsePosition& pos) const; 00488 00512 virtual void parseObject(const UnicodeString& source, 00513 Formattable& result, 00514 ParsePosition& parse_pos) const; 00515 00523 static DateFormat* U_EXPORT2 createInstance(void); 00524 00536 static DateFormat* U_EXPORT2 createTimeInstance(EStyle style = kDefault, 00537 const Locale& aLocale = Locale::getDefault()); 00538 00554 static DateFormat* U_EXPORT2 createDateInstance(EStyle style = kDefault, 00555 const Locale& aLocale = Locale::getDefault()); 00556 00575 static DateFormat* U_EXPORT2 createDateTimeInstance(EStyle dateStyle = kDefault, 00576 EStyle timeStyle = kDefault, 00577 const Locale& aLocale = Locale::getDefault()); 00578 00586 static const Locale* U_EXPORT2 getAvailableLocales(int32_t& count); 00587 00592 virtual UBool isLenient(void) const; 00593 00604 virtual void setLenient(UBool lenient); 00605 00611 virtual const Calendar* getCalendar(void) const; 00612 00622 virtual void adoptCalendar(Calendar* calendarToAdopt); 00623 00631 virtual void setCalendar(const Calendar& newCalendar); 00632 00633 00640 virtual const NumberFormat* getNumberFormat(void) const; 00641 00648 virtual void adoptNumberFormat(NumberFormat* formatToAdopt); 00649 00655 virtual void setNumberFormat(const NumberFormat& newNumberFormat); 00656 00662 virtual const TimeZone& getTimeZone(void) const; 00663 00670 virtual void adoptTimeZone(TimeZone* zoneToAdopt); 00671 00677 virtual void setTimeZone(const TimeZone& zone); 00678 00679 protected: 00686 DateFormat(); 00687 00692 DateFormat(const DateFormat&); 00693 00698 DateFormat& operator=(const DateFormat&); 00699 00706 Calendar* fCalendar; 00707 00714 NumberFormat* fNumberFormat; 00715 00716 private: 00725 static DateFormat* U_EXPORT2 create(EStyle timeStyle, EStyle dateStyle, const Locale& inLocale); 00726 00727 public: 00728 #ifndef U_HIDE_OBSOLETE_API 00729 00734 enum EField 00735 { 00736 // Obsolete; use UDateFormatField instead 00737 kEraField = UDAT_ERA_FIELD, 00738 kYearField = UDAT_YEAR_FIELD, 00739 kMonthField = UDAT_MONTH_FIELD, 00740 kDateField = UDAT_DATE_FIELD, 00741 kHourOfDay1Field = UDAT_HOUR_OF_DAY1_FIELD, 00742 kHourOfDay0Field = UDAT_HOUR_OF_DAY0_FIELD, 00743 kMinuteField = UDAT_MINUTE_FIELD, 00744 kSecondField = UDAT_SECOND_FIELD, 00745 kMillisecondField = UDAT_FRACTIONAL_SECOND_FIELD, 00746 kDayOfWeekField = UDAT_DAY_OF_WEEK_FIELD, 00747 kDayOfYearField = UDAT_DAY_OF_YEAR_FIELD, 00748 kDayOfWeekInMonthField = UDAT_DAY_OF_WEEK_IN_MONTH_FIELD, 00749 kWeekOfYearField = UDAT_WEEK_OF_YEAR_FIELD, 00750 kWeekOfMonthField = UDAT_WEEK_OF_MONTH_FIELD, 00751 kAmPmField = UDAT_AM_PM_FIELD, 00752 kHour1Field = UDAT_HOUR1_FIELD, 00753 kHour0Field = UDAT_HOUR0_FIELD, 00754 kTimezoneField = UDAT_TIMEZONE_FIELD, 00755 kYearWOYField = UDAT_YEAR_WOY_FIELD, 00756 kDOWLocalField = UDAT_DOW_LOCAL_FIELD, 00757 kExtendedYearField = UDAT_EXTENDED_YEAR_FIELD, 00758 kJulianDayField = UDAT_JULIAN_DAY_FIELD, 00759 kMillisecondsInDayField = UDAT_MILLISECONDS_IN_DAY_FIELD, 00760 00761 // Obsolete; use UDateFormatField instead 00762 ERA_FIELD = UDAT_ERA_FIELD, 00763 YEAR_FIELD = UDAT_YEAR_FIELD, 00764 MONTH_FIELD = UDAT_MONTH_FIELD, 00765 DATE_FIELD = UDAT_DATE_FIELD, 00766 HOUR_OF_DAY1_FIELD = UDAT_HOUR_OF_DAY1_FIELD, 00767 HOUR_OF_DAY0_FIELD = UDAT_HOUR_OF_DAY0_FIELD, 00768 MINUTE_FIELD = UDAT_MINUTE_FIELD, 00769 SECOND_FIELD = UDAT_SECOND_FIELD, 00770 MILLISECOND_FIELD = UDAT_FRACTIONAL_SECOND_FIELD, 00771 DAY_OF_WEEK_FIELD = UDAT_DAY_OF_WEEK_FIELD, 00772 DAY_OF_YEAR_FIELD = UDAT_DAY_OF_YEAR_FIELD, 00773 DAY_OF_WEEK_IN_MONTH_FIELD = UDAT_DAY_OF_WEEK_IN_MONTH_FIELD, 00774 WEEK_OF_YEAR_FIELD = UDAT_WEEK_OF_YEAR_FIELD, 00775 WEEK_OF_MONTH_FIELD = UDAT_WEEK_OF_MONTH_FIELD, 00776 AM_PM_FIELD = UDAT_AM_PM_FIELD, 00777 HOUR1_FIELD = UDAT_HOUR1_FIELD, 00778 HOUR0_FIELD = UDAT_HOUR0_FIELD, 00779 TIMEZONE_FIELD = UDAT_TIMEZONE_FIELD 00780 }; 00781 #endif /* U_HIDE_OBSOLETE_API */ 00782 }; 00783 00784 inline UnicodeString& 00785 DateFormat::format(const Formattable& obj, 00786 UnicodeString& appendTo, 00787 UErrorCode& status) const { 00788 return Format::format(obj, appendTo, status); 00789 } 00790 U_NAMESPACE_END 00791 00792 #endif /* #if !UCONFIG_NO_FORMATTING */ 00793 00794 #endif // _DATEFMT 00795 //eof
1.7.6.1