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

smpdtfmt.h

00001 /* 00002 * Copyright (C) {1997-2003}, 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 00190 class U_I18N_API SimpleDateFormat: public DateFormat { 00191 public: 00201 SimpleDateFormat(UErrorCode& status); 00202 00214 SimpleDateFormat(const UnicodeString& pattern, 00215 UErrorCode& status); 00216 00229 SimpleDateFormat(const UnicodeString& pattern, 00230 const Locale& locale, 00231 UErrorCode& status); 00232 00242 SimpleDateFormat(const UnicodeString& pattern, 00243 DateFormatSymbols* formatDataToAdopt, 00244 UErrorCode& status); 00245 00255 SimpleDateFormat(const UnicodeString& pattern, 00256 const DateFormatSymbols& formatData, 00257 UErrorCode& status); 00258 00263 SimpleDateFormat(const SimpleDateFormat&); 00264 00269 SimpleDateFormat& operator=(const SimpleDateFormat&); 00270 00275 virtual ~SimpleDateFormat(); 00276 00283 virtual Format* clone(void) const; 00284 00292 virtual UBool operator==(const Format& other) const; 00293 00310 virtual UnicodeString& format( Calendar& cal, 00311 UnicodeString& appendTo, 00312 FieldPosition& pos) const; 00313 00333 virtual UnicodeString& format( const Formattable& obj, 00334 UnicodeString& appendTo, 00335 FieldPosition& pos, 00336 UErrorCode& status) const; 00337 00348 UnicodeString& format(UDate date, 00349 UnicodeString& appendTo, 00350 FieldPosition& fieldPosition) const; 00351 00361 UnicodeString& format(const Formattable& obj, 00362 UnicodeString& appendTo, 00363 UErrorCode& status) const; 00364 00373 UnicodeString& format(UDate date, UnicodeString& appendTo) const; 00374 00394 virtual void parse( const UnicodeString& text, 00395 Calendar& cal, 00396 ParsePosition& pos) const; 00397 00417 UDate parse( const UnicodeString& text, 00418 ParsePosition& pos) const; 00419 00420 00436 virtual UDate parse( const UnicodeString& text, 00437 UErrorCode& status) const; 00438 00455 virtual void set2DigitYearStart(UDate d, UErrorCode& status); 00456 00472 UDate get2DigitYearStart(UErrorCode& status) const; 00473 00480 virtual UnicodeString& toPattern(UnicodeString& result) const; 00481 00498 virtual UnicodeString& toLocalizedPattern(UnicodeString& result, 00499 UErrorCode& status) const; 00500 00509 virtual void applyPattern(const UnicodeString& pattern); 00510 00521 virtual void applyLocalizedPattern(const UnicodeString& pattern, 00522 UErrorCode& status); 00523 00532 virtual const DateFormatSymbols* getDateFormatSymbols(void) const; 00533 00540 virtual void adoptDateFormatSymbols(DateFormatSymbols* newFormatSymbols); 00541 00547 virtual void setDateFormatSymbols(const DateFormatSymbols& newFormatSymbols); 00548 00560 static UClassID getStaticClassID(void); 00561 00573 virtual UClassID getDynamicClassID(void) const; 00574 00584 virtual void adoptCalendar(Calendar* calendarToAdopt); 00585 00586 private: 00587 friend class DateFormat; 00588 00589 void initializeDefaultCentury(void); 00590 00591 SimpleDateFormat(); // default constructor not implemented 00592 00601 SimpleDateFormat(EStyle timeStyle, EStyle dateStyle, const Locale& locale, UErrorCode& status); 00602 00611 SimpleDateFormat(const Locale& locale, UErrorCode& status); // Use default pattern 00612 00629 void subFormat( UnicodeString &appendTo, 00630 UChar ch, 00631 int32_t count, 00632 FieldPosition& pos, 00633 Calendar& cal, 00634 UErrorCode& status) const; // in case of illegal argument 00635 00648 void zeroPaddingNumber( UnicodeString &appendTo, 00649 int32_t value, 00650 int32_t minDigits, 00651 int32_t maxDigits) const; 00652 00657 static UBool isNumeric(UChar formatChar, int32_t count); 00658 00666 Calendar *initializeCalendar(TimeZone* adoptZone, const Locale& locale, UErrorCode& status); 00667 00674 void initializeSymbols(const Locale& locale, Calendar* calendar, UErrorCode& status); 00675 00685 void construct(EStyle timeStyle, EStyle dateStyle, const Locale& locale, UErrorCode& status); 00686 00693 void initialize(const Locale& locale, UErrorCode& status); 00694 00707 int32_t matchString(const UnicodeString& text, int32_t start, UCalendarDateFields field, 00708 const UnicodeString* stringArray, int32_t stringArrayCount, Calendar& cal) const; 00709 00724 int32_t subParse(const UnicodeString& text, int32_t& start, UChar ch, int32_t count, 00725 UBool obeyCount, UBool allowNegative, UBool ambiguousYear[], Calendar& cal) const; 00726 00727 void parseInt(const UnicodeString& text, 00728 Formattable& number, 00729 ParsePosition& pos, 00730 UBool allowNegative) const; 00731 00744 static void translatePattern(const UnicodeString& originalPattern, 00745 UnicodeString& translatedPattern, 00746 const UnicodeString& from, 00747 const UnicodeString& to, 00748 UErrorCode& status); 00749 00757 void parseAmbiguousDatesAsAfter(UDate startDate, UErrorCode& status); 00758 00762 static const UCalendarDateFields fgPatternIndexToCalendarField[]; 00763 00767 static const DateFormat::EField fgPatternIndexToDateFormatField[]; 00768 00772 UnicodeString fPattern; 00773 00777 Locale fLocale; 00778 00783 DateFormatSymbols* fSymbols; // Owned 00784 00793 UDate fDefaultCenturyStart; 00794 00798 /*transient*/ int32_t fDefaultCenturyStartYear; 00799 00800 UBool fHaveDefaultCentury; 00801 }; 00802 00803 inline UDate 00804 SimpleDateFormat::get2DigitYearStart(UErrorCode& /*status*/) const 00805 { 00806 return fDefaultCenturyStart; 00807 } 00808 00809 inline UnicodeString& 00810 SimpleDateFormat::format(const Formattable& obj, 00811 UnicodeString& appendTo, 00812 UErrorCode& status) const { 00813 // Don't use Format:: - use immediate base class only, 00814 // in case immediate base modifies behavior later. 00815 return DateFormat::format(obj, appendTo, status); 00816 } 00817 00818 inline UnicodeString& 00819 SimpleDateFormat::format(UDate date, 00820 UnicodeString& appendTo, 00821 FieldPosition& fieldPosition) const { 00822 // Don't use Format:: - use immediate base class only, 00823 // in case immediate base modifies behavior later. 00824 return DateFormat::format(date, appendTo, fieldPosition); 00825 } 00826 00827 inline UnicodeString& 00828 SimpleDateFormat::format(UDate date, UnicodeString& appendTo) const { 00829 return DateFormat::format(date, appendTo); 00830 } 00831 00832 U_NAMESPACE_END 00833 00834 #endif /* #if !UCONFIG_NO_FORMATTING */ 00835 00836 #endif // _SMPDTFMT 00837 //eof

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