Main Page   Class Hierarchy   Compound List   File List   Header Files   Sources   Compound Members   File Members  

smpdtfmt.h

00001 /*
00002 * Copyright © {1997-1999}, 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 class DateFormatSymbols;
00029 class DateFormat;
00030 
00166 class U_I18N_API SimpleDateFormat: public DateFormat {
00167 public:
00176     SimpleDateFormat(UErrorCode& status);
00177 
00187     SimpleDateFormat(const UnicodeString& pattern,
00188                      UErrorCode& status);
00189 
00199     SimpleDateFormat(const UnicodeString& pattern,
00200                      const Locale& locale,
00201                      UErrorCode& status);
00202 
00209     SimpleDateFormat(const UnicodeString& pattern,
00210                      DateFormatSymbols* formatDataToAdopt,
00211                      UErrorCode& status);
00212 
00219     SimpleDateFormat(const UnicodeString& pattern,
00220                      const DateFormatSymbols& formatData,
00221                      UErrorCode& status);
00222 
00227     SimpleDateFormat(const SimpleDateFormat&);
00228 
00233     SimpleDateFormat& operator=(const SimpleDateFormat&);
00234 
00239     virtual ~SimpleDateFormat();
00240 
00246     virtual Format* clone(void) const;
00247 
00253     virtual UBool operator==(const Format& other) const;
00254 
00270     virtual UnicodeString& format(  UDate date,
00271                                     UnicodeString& toAppendTo,
00272                                     FieldPosition& pos) const;
00273 
00292     virtual UnicodeString& format(  const Formattable& obj,
00293                                     UnicodeString& toAppendTo,
00294                                     FieldPosition& pos,
00295                                     UErrorCode& status) const;
00296 
00301     UnicodeString& format(const Formattable& obj,
00302                           UnicodeString& result,
00303                           UErrorCode& status) const;
00304 
00309     UnicodeString& format(UDate date, UnicodeString& result) const;
00310 
00330     virtual UDate parse( const UnicodeString& text,
00331                         ParsePosition& pos) const;
00332 
00333 
00349     virtual UDate parse( const UnicodeString& text,
00350                         UErrorCode& status) const;
00351 
00365     virtual void set2DigitYearStart(UDate d, UErrorCode& status);
00366 
00380     UDate get2DigitYearStart(UErrorCode& status) const;
00381 
00386     virtual UnicodeString& toPattern(UnicodeString& result) const;
00387 
00403     virtual UnicodeString& toLocalizedPattern(UnicodeString& result,
00404                                               UErrorCode& status) const;
00405 
00414     virtual void applyPattern(const UnicodeString& pattern);
00415 
00426     virtual void applyLocalizedPattern(const UnicodeString& pattern,
00427                                        UErrorCode& status);
00428 
00437     virtual const DateFormatSymbols* getDateFormatSymbols(void) const;
00438 
00445     virtual void adoptDateFormatSymbols(DateFormatSymbols* newFormatSymbols);
00446 
00452     virtual void setDateFormatSymbols(const DateFormatSymbols& newFormatSymbols);
00453 
00454 
00455 public:
00459     static const char *fgErasTag;   // resource bundle tag for era names
00460     static const char *fgMonthNamesTag; // resource bundle tag for month names
00461     static const char *fgMonthAbbreviationsTag; // resource bundle tag for month abbreviations
00462     static const char *fgDayNamesTag;   // resource bundle tag for day names
00463     static const char *fgDayAbbreviationsTag;   // resource bundle tag for day abbreviations
00464     static const char *fgAmPmMarkersTag;    // resource bundle tag for AM/PM strings
00465     static const char *fgDateTimePatternsTag;   // resource bundle tag for default date and time patterns
00466 
00467     static const char *fgZoneStringsTag;    // resource bundle tag for time zone names
00468     static const char *fgLocalPatternCharsTag;  // resource bundle tag for localized pattern characters
00469 
00470     static const UnicodeString      fgDefaultPattern;    // date/time pattern of last resort
00471 
00472 public:
00484     static UClassID getStaticClassID(void) { return (UClassID)&fgClassID; }
00485 
00497     virtual UClassID getDynamicClassID(void) const { return getStaticClassID(); }
00498 
00499 private:
00500     static char fgClassID;
00501 
00502     friend class DateFormat;
00503 
00516     //int32_t getZoneIndex(const DateFormatSymbols&, const UnicodeString& ID) const;
00517 
00518     void initializeDefaultCentury(void);
00519 
00523     SimpleDateFormat(EStyle timeStyle, EStyle dateStyle, const Locale& locale, UErrorCode& status);
00524 
00530     SimpleDateFormat(const Locale& locale, UErrorCode& status); // Use default pattern
00531 
00552     UnicodeString& subFormat(   UnicodeString& result,
00553                                 UChar ch,
00554                                 int32_t count,
00555                                 int32_t beginOffset,
00556                                 FieldPosition& pos,
00557                                 UErrorCode& status) const; // in case of illegal argument
00558 
00569     UnicodeString& zeroPaddingNumber(UnicodeString& result,
00570                                      int32_t value,
00571                                      int32_t minDigits,
00572                                      int32_t maxDigits) const;
00573 
00583     void construct(EStyle timeStyle, EStyle dateStyle, const Locale& locale, UErrorCode& status);
00584 
00591     void initialize(const Locale& locale, UErrorCode& status);
00592 
00602     int32_t matchString(const UnicodeString& text, UTextOffset start, Calendar::EDateFields field,
00603                     const UnicodeString* stringArray, int32_t stringArrayCount) const;
00604 
00617     int32_t subParse(const UnicodeString& text, int32_t& start, UChar ch, int32_t count,
00618                  UBool obeyCount, UBool ambiguousYear[]) const;
00619 
00627     //UBool subParseLong(const UnicodeString& text, ParsePosition& pos, int32_t& value) const;
00628 
00635     static void translatePattern(const UnicodeString& originalPattern,
00636                                 UnicodeString& translatedPattern,
00637                                 const UnicodeString& from,
00638                                 const UnicodeString& to,
00639                                 UErrorCode& status);
00644     //int32_t getZoneIndex(const UnicodeString& ID) const;
00645 
00650     void         parseAmbiguousDatesAsAfter(UDate startDate, UErrorCode& status);
00651 
00656     UDate         internalGetDefaultCenturyStart(void) const;
00657 
00662     int32_t          internalGetDefaultCenturyStartYear(void) const;
00663 
00668     static void  initializeSystemDefaultCentury(void);
00669 
00673     // For time zones that have no names, use strings GMT+minutes and
00674     // GMT-minutes. For instance, in France the time zone is GMT+60.
00675     static const UnicodeString fgGmtPlus;
00676     static const UnicodeString fgGmtMinus;
00677     static const UnicodeString fgGmt;
00678 
00682     static const Calendar::EDateFields fgPatternIndexToCalendarField[];
00683 
00687     static const DateFormat::EField fgPatternIndexToDateFormatField[];
00688 
00692     UnicodeString       fPattern;
00693 
00698     DateFormatSymbols*  fSymbols;   // Owned
00699 
00708     UDate                fDefaultCenturyStart;
00709 
00713     /*transient*/ int32_t   fDefaultCenturyStartYear;
00714 
00721     static UDate         fgSystemDefaultCenturyStart;
00722 
00726     static int32_t          fgSystemDefaultCenturyStartYear;
00727 
00731     static const int32_t    fgSystemDefaultCenturyYear;
00732 
00733 public:
00738     static const UDate        fgSystemDefaultCentury;
00739 };
00740 
00741 inline UDate
00742 SimpleDateFormat::get2DigitYearStart(UErrorCode& /*status*/) const
00743 {
00744     return fDefaultCenturyStart;
00745 }
00746 
00747 inline UnicodeString&
00748 SimpleDateFormat::format(const Formattable& obj,
00749                          UnicodeString& result,
00750                          UErrorCode& status) const {
00751     // Don't use Format:: - use immediate base class only,
00752     // in case immediate base modifies behavior later.
00753     return DateFormat::format(obj, result, status);
00754 }
00755 
00756 inline UnicodeString&
00757 SimpleDateFormat::format(UDate date, UnicodeString& result) const {
00758     return DateFormat::format(date, result);
00759 }
00760 
00761 #endif // _SMPDTFMT
00762 //eof

Generated at Wed Aug 16 16:05:35 2000 for ICU1.6 by doxygen 1.0.0 written by Dimitri van Heesch, © 1997-1999