Main Page   Class Hierarchy   Alphabetical List   Compound List   File List   Compound Members   File Members  

datefmt.h

Go to the documentation of this file.
00001 /*
00002 ********************************************************************************
00003 *   Copyright (C) 1997-2001, 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 #include "unicode/calendar.h"
00024 #include "unicode/numfmt.h"
00025 #include "unicode/format.h"
00026 #include "unicode/locid.h"
00027 class TimeZone;
00028 
00108 class U_I18N_API DateFormat : public Format {
00109 public:
00120     enum EField
00121     {
00122         kEraField = 0,      // ERA field alignment.
00123         kYearField,         // YEAR field alignment.
00124         kMonthField,        // MONTH field alignment.
00125         kDateField,         // DATE field alignment.
00126         kHourOfDay1Field,     // One-based HOUR_OF_DAY field alignment.
00127                             // kHourOfDay1Field is used for the one-based 24-hour clock.
00128                             // For example, 23:59 + 01:00 results in 24:59.
00129         kHourOfDay0Field,     // Zero-based HOUR_OF_DAY field alignment.
00130                             // HOUR_OF_DAY0_FIELD is used for the zero-based 24-hour clock.
00131                             // For example, 23:59 + 01:00 results in 00:59.
00132         kMinuteField,       // MINUTE field alignment.
00133         kSecondField,       // SECOND field alignment.
00134         kMillisecondField,  // MILLISECOND field alignment.
00135         kDayOfWeekField,      // DAY_OF_WEEK field alignment.
00136         kDayOfYearField,      // DAY_OF_YEAR field alignment.
00137         kDayOfWeekInMonthField,// DAY_OF_WEEK_IN_MONTH field alignment.
00138         kWeekOfYearField,     // WEEK_OF_YEAR field alignment.
00139         kWeekOfMonthField,    // WEEK_OF_MONTH field alignment.
00140         kAmPmField,            // AM_PM field alignment.
00141         kHour1Field,        // One-based HOUR field alignment.
00142                             // HOUR1_FIELD is used for the one-based 12-hour clock.
00143                             // For example, 11:30 PM + 1 hour results in 12:30 AM.
00144         kHour0Field,        // Zero-based HOUR field alignment.
00145                             // HOUR0_FIELD is used for the zero-based 12-hour clock.
00146                             // For example, 11:30 PM + 1 hour results in 00:30 AM.
00147         kTimezoneField,      // TIMEZONE field alignment.
00148         kYearWOYField,   // Corrected year for week representation
00149         kDOWLocalField, // localized day of week
00150 
00151         
00152         
00157         ERA_FIELD                     = kEraField,
00158         YEAR_FIELD                     = kYearField,
00159         MONTH_FIELD                 = kMonthField,
00160         DATE_FIELD                     = kDateField,
00161         HOUR_OF_DAY1_FIELD             = kHourOfDay1Field,
00162         HOUR_OF_DAY0_FIELD             = kHourOfDay0Field,
00163         MINUTE_FIELD                 = kMinuteField,
00164         SECOND_FIELD                 = kSecondField,
00165         MILLISECOND_FIELD             = kMillisecondField,
00166         DAY_OF_WEEK_FIELD             = kDayOfWeekField,
00167         DAY_OF_YEAR_FIELD             = kDayOfYearField,
00168         DAY_OF_WEEK_IN_MONTH_FIELD     = kDayOfWeekInMonthField,
00169         WEEK_OF_YEAR_FIELD             = kWeekOfYearField,
00170         WEEK_OF_MONTH_FIELD         = kWeekOfMonthField,
00171         AM_PM_FIELD                 = kAmPmField,
00172         HOUR1_FIELD                 = kHour1Field,
00173         HOUR0_FIELD                 = kHour0Field,
00174         TIMEZONE_FIELD                 = kTimezoneField
00175 
00176     };
00177 
00184     enum EStyle
00185     {
00186         kNone   = -1,
00187 
00188         kFull   = 0,
00189         kLong   = 1,
00190         kMedium = 2,
00191         kShort  = 3,
00192 
00193         kDateOffset   = kShort + 1,
00194      // kFull   + kDateOffset = 4
00195      // kLong   + kDateOffset = 5
00196      // kMedium + kDateOffset = 6
00197      // kShort  + kDateOffset = 7
00198 
00199         kDateTime             = 8,
00200 
00201         kDefault      = kMedium,
00202 
00203         
00204         
00209         FULL        = kFull,
00210         LONG        = kLong,
00211         MEDIUM        = kMedium,
00212         SHORT        = kShort,
00213         DEFAULT        = kDefault,
00214         DATE_OFFSET    = kDateOffset,
00215         NONE        = kNone,
00216         DATE_TIME    = kDateTime
00217     };
00218 
00223     virtual ~DateFormat();
00224 
00229     virtual UBool operator==(const Format&) const;
00230 
00246     virtual UnicodeString& format(const Formattable& obj,
00247                                   UnicodeString& toAppendTo,
00248                                   FieldPosition& pos,
00249                                   UErrorCode& status) const;
00250 
00279     virtual UnicodeString& format(  UDate date,
00280                                     UnicodeString& toAppendTo,
00281                                     FieldPosition& fieldPosition) const = 0;
00282 
00293     UnicodeString& format(UDate date, UnicodeString& result) const;
00294 
00299     UnicodeString& format(const Formattable& obj,
00300                           UnicodeString& result,
00301                           UErrorCode& status) const;
00302 
00313     virtual UDate parse( const UnicodeString& text,
00314                         UErrorCode& status) const;
00315 
00335     virtual UDate parse( const UnicodeString& text,
00336                         ParsePosition& pos) const = 0;
00337 
00364     virtual void parseObject(const UnicodeString& source,
00365                              Formattable& result,
00366                              ParsePosition& parse_pos) const;
00367 
00375     static DateFormat* createInstance(void);
00376 
00387     static DateFormat* createTimeInstance(EStyle style = kDefault,
00388                                           const Locale& aLocale = Locale::getDefault());
00389 
00400     static DateFormat* createDateInstance(EStyle style = kDefault,
00401                                           const Locale& aLocale = Locale::getDefault());
00402 
00415     static DateFormat* createDateTimeInstance(EStyle dateStyle = kDefault,
00416                                               EStyle timeStyle = kDefault,
00417                                               const Locale& aLocale = Locale::getDefault());
00418 
00426     static const Locale* getAvailableLocales(int32_t& count);
00427   
00432     virtual UBool isLenient(void) const;
00433 
00442     virtual void setLenient(UBool lenient);
00443     
00449     virtual const Calendar* getCalendar(void) const;
00450     
00457     virtual void adoptCalendar(Calendar* calendarToAdopt);
00458 
00464     virtual void setCalendar(const Calendar& newCalendar);
00465 
00466    
00473     virtual const NumberFormat* getNumberFormat(void) const;
00474     
00481     virtual void adoptNumberFormat(NumberFormat* formatToAdopt);
00482 
00488     virtual void setNumberFormat(const NumberFormat& newNumberFormat);
00489 
00495     virtual const TimeZone& getTimeZone(void) const;
00496     
00503     virtual void adoptTimeZone(TimeZone* zoneToAdopt);
00504 
00510     virtual void setTimeZone(const TimeZone& zone);
00511 
00512     
00513 protected:
00520     DateFormat();
00521 
00526     DateFormat(const DateFormat&);
00527 
00532     DateFormat& operator=(const DateFormat&);
00533 
00539     Calendar* fCalendar;
00540 
00546     NumberFormat* fNumberFormat;
00547 
00548 private:
00557     static DateFormat* create(EStyle timeStyle, EStyle dateStyle, const Locale&);
00558 
00563     static int32_t          fgLocalesCount;
00564 
00569     static const Locale*    fgLocales;
00570 };
00571 
00572 inline UnicodeString&
00573 DateFormat::format(const Formattable& obj,
00574                    UnicodeString& result,
00575                    UErrorCode& status) const {
00576     return Format::format(obj, result, status);
00577 }
00578 
00579 #endif // _DATEFMT
00580 //eof

Generated at Tue Jun 12 14:03:55 2001 for ICU 1.8.1 by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000