smpdtfmt.h

Go to the documentation of this file.
00001 /* 00002 * Copyright (C) {1997-2004}, International Business Machines Corporation and others. All Rights Reserved. 00003 ******************************************************************************* 00004 * 00005 * File SMPDTFMT.H 00006 * 00007 * Modification History: 00008 * 00009 * Date Name Description 00010 * 02/19/97 aliu Converted from java. 00011 * 07/09/97 helena Make ParsePosition into a class. 00012 * 07/21/98 stephen Added GMT_PLUS, GMT_MINUS 00013 * Changed setTwoDigitStartDate to set2DigitYearStart 00014 * Changed getTwoDigitStartDate to get2DigitYearStart 00015 * Removed subParseLong 00016 * Removed getZoneIndex (added in DateFormatSymbols) 00017 * 06/14/99 stephen Removed fgTimeZoneDataSuffix 00018 * 10/14/99 aliu Updated class doc to describe 2-digit year parsing 00019 * {j28 4182066}. 00020 ******************************************************************************* 00021 */ 00022 00023 #ifndef SMPDTFMT_H 00024 #define SMPDTFMT_H 00025 00026 #include "unicode/utypes.h" 00027 00028 #if !UCONFIG_NO_FORMATTING 00029 00030 #include "unicode/datefmt.h" 00031 00032 U_NAMESPACE_BEGIN 00033 00034 class DateFormatSymbols; 00035 class DateFormat; 00036 00199 class U_I18N_API SimpleDateFormat: public DateFormat { 00200 public: 00210 SimpleDateFormat(UErrorCode& status); 00211 00223 SimpleDateFormat(const UnicodeString& pattern, 00224 UErrorCode& status); 00225 00238 SimpleDateFormat(const UnicodeString& pattern, 00239 const Locale& locale, 00240 UErrorCode& status); 00241 00251 SimpleDateFormat(const UnicodeString& pattern, 00252 DateFormatSymbols* formatDataToAdopt, 00253 UErrorCode& status); 00254 00264 SimpleDateFormat(const UnicodeString& pattern, 00265 const DateFormatSymbols& formatData, 00266 UErrorCode& status); 00267 00272 SimpleDateFormat(const SimpleDateFormat&); 00273 00278 SimpleDateFormat& operator=(const SimpleDateFormat&); 00279 00284 virtual ~SimpleDateFormat(); 00285 00292 virtual Format* clone(void) const; 00293 00301 virtual UBool operator==(const Format& other) const; 00302 00319 virtual UnicodeString& format( Calendar& cal, 00320 UnicodeString& appendTo, 00321 FieldPosition& pos) const; 00322 00342 virtual UnicodeString& format( const Formattable& obj, 00343 UnicodeString& appendTo, 00344 FieldPosition& pos, 00345 UErrorCode& status) const; 00346 00357 UnicodeString& format(UDate date, 00358 UnicodeString& appendTo, 00359 FieldPosition& fieldPosition) const; 00360 00370 UnicodeString& format(const Formattable& obj, 00371 UnicodeString& appendTo, 00372 UErrorCode& status) const; 00373 00382 UnicodeString& format(UDate date, UnicodeString& appendTo) const; 00383 00403 virtual void parse( const UnicodeString& text, 00404 Calendar& cal, 00405 ParsePosition& pos) const; 00406 00426 UDate parse( const UnicodeString& text, 00427 ParsePosition& pos) const; 00428 00429 00445 virtual UDate parse( const UnicodeString& text, 00446 UErrorCode& status) const; 00447 00464 virtual void set2DigitYearStart(UDate d, UErrorCode& status); 00465 00481 UDate get2DigitYearStart(UErrorCode& status) const; 00482 00489 virtual UnicodeString& toPattern(UnicodeString& result) const; 00490 00507 virtual UnicodeString& toLocalizedPattern(UnicodeString& result, 00508 UErrorCode& status) const; 00509 00518 virtual void applyPattern(const UnicodeString& pattern); 00519 00530 virtual void applyLocalizedPattern(const UnicodeString& pattern, 00531 UErrorCode& status); 00532 00541 virtual const DateFormatSymbols* getDateFormatSymbols(void) const; 00542 00549 virtual void adoptDateFormatSymbols(DateFormatSymbols* newFormatSymbols); 00550 00556 virtual void setDateFormatSymbols(const DateFormatSymbols& newFormatSymbols); 00557 00569 static UClassID getStaticClassID(void); 00570 00582 virtual UClassID getDynamicClassID(void) const; 00583 00593 virtual void adoptCalendar(Calendar* calendarToAdopt); 00594 00595 private: 00596 friend class DateFormat; 00597 00598 void initializeDefaultCentury(void); 00599 00600 SimpleDateFormat(); // default constructor not implemented 00601 00610 SimpleDateFormat(EStyle timeStyle, EStyle dateStyle, const Locale& locale, UErrorCode& status); 00611 00620 SimpleDateFormat(const Locale& locale, UErrorCode& status); // Use default pattern 00621 00638 void subFormat( UnicodeString &appendTo, 00639 UChar ch, 00640 int32_t count, 00641 FieldPosition& pos, 00642 Calendar& cal, 00643 UErrorCode& status) const; // in case of illegal argument 00644 00657 void zeroPaddingNumber( UnicodeString &appendTo, 00658 int32_t value, 00659 int32_t minDigits, 00660 int32_t maxDigits) const; 00661 00666 static UBool isNumeric(UChar formatChar, int32_t count); 00667 00675 Calendar *initializeCalendar(TimeZone* adoptZone, const Locale& locale, UErrorCode& status); 00676 00683 void initializeSymbols(const Locale& locale, Calendar* calendar, UErrorCode& status); 00684 00694 void construct(EStyle timeStyle, EStyle dateStyle, const Locale& locale, UErrorCode& status); 00695 00702 void initialize(const Locale& locale, UErrorCode& status); 00703 00716 int32_t matchString(const UnicodeString& text, int32_t start, UCalendarDateFields field, 00717 const UnicodeString* stringArray, int32_t stringArrayCount, Calendar& cal) const; 00718 00733 int32_t subParse(const UnicodeString& text, int32_t& start, UChar ch, int32_t count, 00734 UBool obeyCount, UBool allowNegative, UBool ambiguousYear[], Calendar& cal) const; 00735 00736 void parseInt(const UnicodeString& text, 00737 Formattable& number, 00738 ParsePosition& pos, 00739 UBool allowNegative) const; 00740 00753 static void translatePattern(const UnicodeString& originalPattern, 00754 UnicodeString& translatedPattern, 00755 const UnicodeString& from, 00756 const UnicodeString& to, 00757 UErrorCode& status); 00758 00766 void parseAmbiguousDatesAsAfter(UDate startDate, UErrorCode& status); 00767 00771 static const UCalendarDateFields fgPatternIndexToCalendarField[]; 00772 00776 static const UDateFormatField fgPatternIndexToDateFormatField[]; 00777 00781 UnicodeString fPattern; 00782 00786 Locale fLocale; 00787 00792 DateFormatSymbols* fSymbols; // Owned 00793 00802 UDate fDefaultCenturyStart; 00803 00807 /*transient*/ int32_t fDefaultCenturyStartYear; 00808 00809 UBool fHaveDefaultCentury; 00810 }; 00811 00812 inline UDate 00813 SimpleDateFormat::get2DigitYearStart(UErrorCode& /*status*/) const 00814 { 00815 return fDefaultCenturyStart; 00816 } 00817 00818 inline UnicodeString& 00819 SimpleDateFormat::format(const Formattable& obj, 00820 UnicodeString& appendTo, 00821 UErrorCode& status) const { 00822 // Don't use Format:: - use immediate base class only, 00823 // in case immediate base modifies behavior later. 00824 return DateFormat::format(obj, appendTo, status); 00825 } 00826 00827 inline UnicodeString& 00828 SimpleDateFormat::format(UDate date, 00829 UnicodeString& appendTo, 00830 FieldPosition& fieldPosition) const { 00831 // Don't use Format:: - use immediate base class only, 00832 // in case immediate base modifies behavior later. 00833 return DateFormat::format(date, appendTo, fieldPosition); 00834 } 00835 00836 inline UnicodeString& 00837 SimpleDateFormat::format(UDate date, UnicodeString& appendTo) const { 00838 return DateFormat::format(date, appendTo); 00839 } 00840 00841 U_NAMESPACE_END 00842 00843 #endif /* #if !UCONFIG_NO_FORMATTING */ 00844 00845 #endif // _SMPDTFMT 00846 //eof

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