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

datefmt.h

00001 /*
00002 ********************************************************************************
00003 *   Copyright (C) 1997-1999, 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 
00100 class U_I18N_API DateFormat : public Format {
00101 public:
00112     enum EField
00113     {
00114         kEraField,          // ERA field alignment.
00115         kYearField,         // YEAR field alignment.
00116         kMonthField,        // MONTH field alignment.
00117         kDateField,         // DATE field alignment.
00118         kHourOfDay1Field,     // One-based HOUR_OF_DAY field alignment.
00119                             // kHourOfDay1Field is used for the one-based 24-hour clock.
00120                             // For example, 23:59 + 01:00 results in 24:59.
00121         kHourOfDay0Field,     // Zero-based HOUR_OF_DAY field alignment.
00122                             // HOUR_OF_DAY0_FIELD is used for the zero-based 24-hour clock.
00123                             // For example, 23:59 + 01:00 results in 00:59.
00124         kMinuteField,       // MINUTE field alignment.
00125         kSecondField,       // SECOND field alignment.
00126         kMillisecondField,  // MILLISECOND field alignment.
00127         kDayOfWeekField,      // DAY_OF_WEEK field alignment.
00128         kDayOfYearField,      // DAY_OF_YEAR field alignment.
00129         kDayOfWeekInMonthField,// DAY_OF_WEEK_IN_MONTH field alignment.
00130         kWeekOfYearField,     // WEEK_OF_YEAR field alignment.
00131         kWeekOfMonthField,    // WEEK_OF_MONTH field alignment.
00132         kAmPmField,            // AM_PM field alignment.
00133         kHour1Field,        // One-based HOUR field alignment.
00134                             // HOUR1_FIELD is used for the one-based 12-hour clock.
00135                             // For example, 11:30 PM + 1 hour results in 12:30 AM.
00136         kHour0Field,        // Zero-based HOUR field alignment.
00137                             // HOUR0_FIELD is used for the zero-based 12-hour clock.
00138                             // For example, 11:30 PM + 1 hour results in 00:30 AM.
00139         kTimezoneField,      // TIMEZONE field alignment.
00140         kYearWOYField,   // Corrected year for week representation
00141         kDOWLocalField, // localized day of week
00142 
00143         
00144         
00149         ERA_FIELD                     = kEraField,
00150         YEAR_FIELD                     = kYearField,
00151         MONTH_FIELD                 = kMonthField,
00152         DATE_FIELD                     = kDateField,
00153         HOUR_OF_DAY1_FIELD             = kHourOfDay1Field,
00154         HOUR_OF_DAY0_FIELD             = kHourOfDay0Field,
00155         MINUTE_FIELD                 = kMinuteField,
00156         SECOND_FIELD                 = kSecondField,
00157         MILLISECOND_FIELD             = kMillisecondField,
00158         DAY_OF_WEEK_FIELD             = kDayOfWeekField,
00159         DAY_OF_YEAR_FIELD             = kDayOfYearField,
00160         DAY_OF_WEEK_IN_MONTH_FIELD     = kDayOfWeekInMonthField,
00161         WEEK_OF_YEAR_FIELD             = kWeekOfYearField,
00162         WEEK_OF_MONTH_FIELD         = kWeekOfMonthField,
00163         AM_PM_FIELD                 = kAmPmField,
00164         HOUR1_FIELD                 = kHour1Field,
00165         HOUR0_FIELD                 = kHour0Field,
00166         TIMEZONE_FIELD                 = kTimezoneField
00167 
00168     };
00169 
00176     enum EStyle
00177     {
00178         kFull,
00179         kLong,
00180         kMedium,
00181         kShort,
00182 
00183         kDefault     = kMedium,
00184         kDateOffset = 4,
00185         kNone         = -1,
00186         kDateTime     = 8,
00187         
00188         
00193         FULL        = kFull,
00194         LONG        = kLong,
00195         MEDIUM        = kMedium,
00196         SHORT        = kShort,
00197         DEFAULT        = kDefault,
00198         DATE_OFFSET    = kDateOffset,
00199         NONE        = kNone,
00200         DATE_TIME    = kDateTime
00201     };
00202 
00207     virtual ~DateFormat();
00208 
00213     virtual UBool operator==(const Format&) const;
00214 
00230     virtual UnicodeString& format(const Formattable& obj,
00231                                   UnicodeString& toAppendTo,
00232                                   FieldPosition& pos,
00233                                   UErrorCode& status) const;
00234 
00263     virtual UnicodeString& format(  UDate date,
00264                                     UnicodeString& toAppendTo,
00265                                     FieldPosition& fieldPosition) const = 0;
00266 
00277     UnicodeString& format(UDate date, UnicodeString& result) const;
00278 
00283     UnicodeString& format(const Formattable& obj,
00284                           UnicodeString& result,
00285                           UErrorCode& status) const;
00286 
00297     virtual UDate parse( const UnicodeString& text,
00298                         UErrorCode& status) const;
00299 
00319     virtual UDate parse( const UnicodeString& text,
00320                         ParsePosition& pos) const = 0;
00321 
00348     virtual void parseObject(const UnicodeString& source,
00349                              Formattable& result,
00350                              ParsePosition& parse_pos) const;
00351 
00359     static DateFormat* createInstance(void);
00360 
00371     static DateFormat* createTimeInstance(EStyle style = kDefault,
00372                                           const Locale& aLocale = Locale::getDefault());
00373 
00384     static DateFormat* createDateInstance(EStyle style = kDefault,
00385                                           const Locale& aLocale = Locale::getDefault());
00386 
00399     static DateFormat* createDateTimeInstance(EStyle dateStyle = kDefault,
00400                                               EStyle timeStyle = kDefault,
00401                                               const Locale& aLocale = Locale::getDefault());
00402 
00410     static const Locale* getAvailableLocales(int32_t& count);
00411   
00416     virtual UBool isLenient(void) const;
00417 
00426     virtual void setLenient(UBool lenient);
00427     
00433     virtual const Calendar* getCalendar(void) const;
00434     
00441     virtual void adoptCalendar(Calendar* calendarToAdopt);
00442 
00448     virtual void setCalendar(const Calendar& newCalendar);
00449 
00450    
00457     virtual const NumberFormat* getNumberFormat(void) const;
00458     
00465     virtual void adoptNumberFormat(NumberFormat* formatToAdopt);
00466 
00472     virtual void setNumberFormat(const NumberFormat& newNumberFormat);
00473 
00479     virtual const TimeZone& getTimeZone(void) const;
00480     
00487     virtual void adoptTimeZone(TimeZone* zoneToAdopt);
00488 
00494     virtual void setTimeZone(const TimeZone& zone);
00495 
00496     
00497 protected:
00504     DateFormat();
00505 
00510     DateFormat(const DateFormat&);
00511 
00516     DateFormat& operator=(const DateFormat&);
00517 
00523     Calendar* fCalendar;
00524 
00530     NumberFormat* fNumberFormat;
00531 
00532 private:
00541     static DateFormat* create(EStyle timeStyle, EStyle dateStyle, const Locale&);
00542 
00547     static int32_t          fgLocalesCount;
00548 
00553     static const Locale*    fgLocales;
00554 };
00555 
00556 inline UnicodeString&
00557 DateFormat::format(const Formattable& obj,
00558                    UnicodeString& result,
00559                    UErrorCode& status) const {
00560     return Format::format(obj, result, status);
00561 }
00562 
00563 #endif // _DATEFMT
00564 //eof

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