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

smpdtfmt.h

00001 /* 00002 * Copyright (C) {1997-2001}, 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 #include "unicode/datefmt.h" 00028 00029 U_NAMESPACE_BEGIN 00030 00031 class DateFormatSymbols; 00032 class DateFormat; 00033 00175 class U_I18N_API SimpleDateFormat: public DateFormat { 00176 public: 00185 SimpleDateFormat(UErrorCode& status); 00186 00196 SimpleDateFormat(const UnicodeString& pattern, 00197 UErrorCode& status); 00198 00208 SimpleDateFormat(const UnicodeString& pattern, 00209 const Locale& locale, 00210 UErrorCode& status); 00211 00218 SimpleDateFormat(const UnicodeString& pattern, 00219 DateFormatSymbols* formatDataToAdopt, 00220 UErrorCode& status); 00221 00228 SimpleDateFormat(const UnicodeString& pattern, 00229 const DateFormatSymbols& formatData, 00230 UErrorCode& status); 00231 00236 SimpleDateFormat(const SimpleDateFormat&); 00237 00242 SimpleDateFormat& operator=(const SimpleDateFormat&); 00243 00248 virtual ~SimpleDateFormat(); 00249 00255 virtual Format* clone(void) const; 00256 00262 virtual UBool operator==(const Format& other) const; 00263 00280 virtual UnicodeString& format( Calendar& cal, 00281 UnicodeString& toAppendTo, 00282 FieldPosition& pos) const; 00283 00302 virtual UnicodeString& format( const Formattable& obj, 00303 UnicodeString& toAppendTo, 00304 FieldPosition& pos, 00305 UErrorCode& status) const; 00306 00311 UnicodeString& format(UDate date, 00312 UnicodeString& result, 00313 FieldPosition& fieldPosition) const; 00314 00319 UnicodeString& format(const Formattable& obj, 00320 UnicodeString& result, 00321 UErrorCode& status) const; 00322 00327 UnicodeString& format(UDate date, UnicodeString& result) const; 00328 00346 virtual void parse( const UnicodeString& text, 00347 Calendar& cal, 00348 ParsePosition& pos) const; 00349 00369 UDate parse( const UnicodeString& text, 00370 ParsePosition& pos) const; 00371 00372 00388 virtual UDate parse( const UnicodeString& text, 00389 UErrorCode& status) const; 00390 00404 virtual void set2DigitYearStart(UDate d, UErrorCode& status); 00405 00419 UDate get2DigitYearStart(UErrorCode& status) const; 00420 00425 virtual UnicodeString& toPattern(UnicodeString& result) const; 00426 00442 virtual UnicodeString& toLocalizedPattern(UnicodeString& result, 00443 UErrorCode& status) const; 00444 00453 virtual void applyPattern(const UnicodeString& pattern); 00454 00465 virtual void applyLocalizedPattern(const UnicodeString& pattern, 00466 UErrorCode& status); 00467 00476 virtual const DateFormatSymbols* getDateFormatSymbols(void) const; 00477 00484 virtual void adoptDateFormatSymbols(DateFormatSymbols* newFormatSymbols); 00485 00491 virtual void setDateFormatSymbols(const DateFormatSymbols& newFormatSymbols); 00492 00504 static UClassID getStaticClassID(void) { return (UClassID)&fgClassID; } 00505 00517 virtual UClassID getDynamicClassID(void) const { return getStaticClassID(); } 00518 00519 private: 00520 static const char fgClassID; 00521 00522 static const char fgDateTimePatternsTag[]; // resource bundle tag for default date and time patterns 00523 00524 static const UChar fgDefaultPattern[]; // date/time pattern of last resort 00525 00526 friend class DateFormat; 00527 00540 //int32_t getZoneIndex(const DateFormatSymbols&, const UnicodeString& ID) const; 00541 00542 void initializeDefaultCentury(void); 00543 00547 SimpleDateFormat(EStyle timeStyle, EStyle dateStyle, const Locale& locale, UErrorCode& status); 00548 00554 SimpleDateFormat(const Locale& locale, UErrorCode& status); // Use default pattern 00555 00575 UnicodeString& subFormat( UnicodeString& result, 00576 UChar ch, 00577 int32_t count, 00578 int32_t beginOffset, 00579 FieldPosition& pos, 00580 Calendar& cal, 00581 UErrorCode& status) const; // in case of illegal argument 00582 00593 UnicodeString& zeroPaddingNumber(UnicodeString& result, 00594 int32_t value, 00595 int32_t minDigits, 00596 int32_t maxDigits) const; 00597 00607 void construct(EStyle timeStyle, EStyle dateStyle, const Locale& locale, UErrorCode& status); 00608 00615 void initialize(const Locale& locale, UErrorCode& status); 00616 00626 int32_t matchString(const UnicodeString& text, int32_t start, Calendar::EDateFields field, 00627 const UnicodeString* stringArray, int32_t stringArrayCount, Calendar& cal) const; 00628 00640 int32_t subParse(const UnicodeString& text, int32_t& start, UChar ch, int32_t count, 00641 UBool obeyCount, UBool ambiguousYear[], Calendar& cal) const; 00642 00650 //UBool subParseLong(const UnicodeString& text, ParsePosition& pos, int32_t& value) const; 00651 00658 static void translatePattern(const UnicodeString& originalPattern, 00659 UnicodeString& translatedPattern, 00660 const UnicodeString& from, 00661 const UnicodeString& to, 00662 UErrorCode& status); 00667 //int32_t getZoneIndex(const UnicodeString& ID) const; 00668 00673 void parseAmbiguousDatesAsAfter(UDate startDate, UErrorCode& status); 00674 00679 UDate internalGetDefaultCenturyStart(void) const; 00680 00685 int32_t internalGetDefaultCenturyStartYear(void) const; 00686 00691 static void initializeSystemDefaultCentury(void); 00692 00696 // For time zones that have no names, use strings GMT+minutes and 00697 // GMT-minutes. For instance, in France the time zone is GMT+60. 00698 static const UChar fgGmtPlus[]; 00699 static const UChar fgGmtMinus[]; 00700 static const UChar fgGmt[]; 00701 00705 static const Calendar::EDateFields fgPatternIndexToCalendarField[]; 00706 00710 static const DateFormat::EField fgPatternIndexToDateFormatField[]; 00711 00715 UnicodeString fPattern; 00716 00721 DateFormatSymbols* fSymbols; // Owned 00722 00731 UDate fDefaultCenturyStart; 00732 00736 /*transient*/ int32_t fDefaultCenturyStartYear; 00737 00744 static UDate fgSystemDefaultCenturyStart; 00745 00749 static int32_t fgSystemDefaultCenturyStartYear; 00750 00754 static const int32_t fgSystemDefaultCenturyYear; 00755 00756 public: 00761 static const UDate fgSystemDefaultCentury; 00762 }; 00763 00764 inline UDate 00765 SimpleDateFormat::get2DigitYearStart(UErrorCode& /*status*/) const 00766 { 00767 return fDefaultCenturyStart; 00768 } 00769 00770 inline UnicodeString& 00771 SimpleDateFormat::format(const Formattable& obj, 00772 UnicodeString& result, 00773 UErrorCode& status) const { 00774 // Don't use Format:: - use immediate base class only, 00775 // in case immediate base modifies behavior later. 00776 return DateFormat::format(obj, result, status); 00777 } 00778 00779 inline UnicodeString& 00780 SimpleDateFormat::format(UDate date, 00781 UnicodeString& result, 00782 FieldPosition& fieldPosition) const { 00783 // Don't use Format:: - use immediate base class only, 00784 // in case immediate base modifies behavior later. 00785 return DateFormat::format(date, result, fieldPosition); 00786 } 00787 00788 inline UnicodeString& 00789 SimpleDateFormat::format(UDate date, UnicodeString& result) const { 00790 return DateFormat::format(date, result); 00791 } 00792 00793 U_NAMESPACE_END 00794 00795 #endif // _SMPDTFMT 00796 //eof

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