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

datefmt.h

00001 /*
00002 ********************************************************************************
00003 *   Copyright (C) 1997-2003, 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 
00024 #if !UCONFIG_NO_FORMATTING
00025 
00026 #include "unicode/calendar.h"
00027 #include "unicode/numfmt.h"
00028 #include "unicode/format.h"
00029 #include "unicode/locid.h"
00030 
00031 U_NAMESPACE_BEGIN
00032 
00033 class TimeZone;
00034 
00127 class U_I18N_API DateFormat : public Format {
00128 public:
00140     enum EField
00141     {
00142         kEraField = 0,      // ERA field alignment.
00143         kYearField,         // YEAR field alignment.
00144         kMonthField,        // MONTH field alignment.
00145         kDateField,         // DATE field alignment.
00146         kHourOfDay1Field,     // One-based HOUR_OF_DAY field alignment.
00147                             // kHourOfDay1Field is used for the one-based 24-hour clock.
00148                             // For example, 23:59 + 01:00 results in 24:59.
00149         kHourOfDay0Field,     // Zero-based HOUR_OF_DAY field alignment.
00150                             // HOUR_OF_DAY0_FIELD is used for the zero-based 24-hour clock.
00151                             // For example, 23:59 + 01:00 results in 00:59.
00152         kMinuteField,       // MINUTE field alignment.
00153         kSecondField,       // SECOND field alignment.
00154         kMillisecondField,  // MILLISECOND field alignment.
00155         kDayOfWeekField,      // DAY_OF_WEEK field alignment.
00156         kDayOfYearField,      // DAY_OF_YEAR field alignment.
00157         kDayOfWeekInMonthField,// DAY_OF_WEEK_IN_MONTH field alignment.
00158         kWeekOfYearField,     // WEEK_OF_YEAR field alignment.
00159         kWeekOfMonthField,    // WEEK_OF_MONTH field alignment.
00160         kAmPmField,            // AM_PM field alignment.
00161         kHour1Field,        // One-based HOUR field alignment.
00162                             // HOUR1_FIELD is used for the one-based 12-hour clock.
00163                             // For example, 11:30 PM + 1 hour results in 12:30 AM.
00164         kHour0Field,        // Zero-based HOUR field alignment.
00165                             // HOUR0_FIELD is used for the zero-based 12-hour clock.
00166                             // For example, 11:30 PM + 1 hour results in 00:30 AM.
00167         kTimezoneField,      // TIMEZONE field alignment.
00168         kYearWOYField,   // Corrected year for week representation
00169         kDOWLocalField, // localized day of week
00170         kExtendedYearField,
00171         kJulianDayField,
00172         kMillisecondsInDayField,
00173         
00174         
00179         ERA_FIELD                     = kEraField,
00180         YEAR_FIELD                     = kYearField,
00181         MONTH_FIELD                 = kMonthField,
00182         DATE_FIELD                     = kDateField,
00183         HOUR_OF_DAY1_FIELD             = kHourOfDay1Field,
00184         HOUR_OF_DAY0_FIELD             = kHourOfDay0Field,
00185         MINUTE_FIELD                 = kMinuteField,
00186         SECOND_FIELD                 = kSecondField,
00187         MILLISECOND_FIELD             = kMillisecondField,
00188         DAY_OF_WEEK_FIELD             = kDayOfWeekField,
00189         DAY_OF_YEAR_FIELD             = kDayOfYearField,
00190         DAY_OF_WEEK_IN_MONTH_FIELD     = kDayOfWeekInMonthField,
00191         WEEK_OF_YEAR_FIELD             = kWeekOfYearField,
00192         WEEK_OF_MONTH_FIELD         = kWeekOfMonthField,
00193         AM_PM_FIELD                 = kAmPmField,
00194         HOUR1_FIELD                 = kHour1Field,
00195         HOUR0_FIELD                 = kHour0Field,
00196         TIMEZONE_FIELD                 = kTimezoneField
00197 
00198     };
00199 
00207     enum EStyle
00208     {
00209         kNone   = -1,
00210 
00211         kFull   = 0,
00212         kLong   = 1,
00213         kMedium = 2,
00214         kShort  = 3,
00215 
00216         kDateOffset   = kShort + 1,
00217      // kFull   + kDateOffset = 4
00218      // kLong   + kDateOffset = 5
00219      // kMedium + kDateOffset = 6
00220      // kShort  + kDateOffset = 7
00221 
00222         kDateTime             = 8,
00223 
00224         kDefault      = kMedium,
00225 
00226         
00227         
00232         FULL        = kFull,
00233         LONG        = kLong,
00234         MEDIUM        = kMedium,
00235         SHORT        = kShort,
00236         DEFAULT        = kDefault,
00237         DATE_OFFSET    = kDateOffset,
00238         NONE        = kNone,
00239         DATE_TIME    = kDateTime
00240     };
00241 
00246     virtual ~DateFormat();
00247 
00252     virtual UBool operator==(const Format&) const;
00253 
00268     virtual UnicodeString& format(const Formattable& obj,
00269                                   UnicodeString& appendTo,
00270                                   FieldPosition& pos,
00271                                   UErrorCode& status) const;
00272 
00302     virtual UnicodeString& format(  Calendar& cal,
00303                                     UnicodeString& appendTo,
00304                                     FieldPosition& fieldPosition) const = 0;
00305 
00333     UnicodeString& format(  UDate date,
00334                             UnicodeString& appendTo,
00335                             FieldPosition& fieldPosition) const;
00336 
00348     UnicodeString& format(UDate date, UnicodeString& appendTo) const;
00349 
00360     UnicodeString& format(const Formattable& obj,
00361                           UnicodeString& appendTo,
00362                           UErrorCode& status) const;
00363 
00374     virtual UDate parse( const UnicodeString& text,
00375                         UErrorCode& status) const;
00376 
00398     virtual void parse( const UnicodeString& text,
00399                         Calendar& cal,
00400                         ParsePosition& pos) const = 0;
00401 
00421     UDate parse( const UnicodeString& text,
00422                  ParsePosition& pos) const;
00423 
00450     virtual void parseObject(const UnicodeString& source,
00451                              Formattable& result,
00452                              ParsePosition& parse_pos) const;
00453 
00461     static DateFormat* createInstance(void);
00462 
00473     static DateFormat* createTimeInstance(EStyle style = kDefault,
00474                                           const Locale& aLocale = Locale::getDefault());
00475 
00486     static DateFormat* createDateInstance(EStyle style = kDefault,
00487                                           const Locale& aLocale = Locale::getDefault());
00488 
00501     static DateFormat* createDateTimeInstance(EStyle dateStyle = kDefault,
00502                                               EStyle timeStyle = kDefault,
00503                                               const Locale& aLocale = Locale::getDefault());
00504 
00512     static const Locale* getAvailableLocales(int32_t& count);
00513   
00518     virtual UBool isLenient(void) const;
00519 
00530     virtual void setLenient(UBool lenient);
00531     
00537     virtual const Calendar* getCalendar(void) const;
00538     
00548     virtual void adoptCalendar(Calendar* calendarToAdopt);
00549 
00557     virtual void setCalendar(const Calendar& newCalendar);
00558 
00559    
00566     virtual const NumberFormat* getNumberFormat(void) const;
00567     
00574     virtual void adoptNumberFormat(NumberFormat* formatToAdopt);
00575 
00581     virtual void setNumberFormat(const NumberFormat& newNumberFormat);
00582 
00588     virtual const TimeZone& getTimeZone(void) const;
00589     
00596     virtual void adoptTimeZone(TimeZone* zoneToAdopt);
00597 
00603     virtual void setTimeZone(const TimeZone& zone);
00604 
00605 protected:
00612     DateFormat();
00613 
00618     DateFormat(const DateFormat&);
00619 
00624     DateFormat& operator=(const DateFormat&);
00625 
00632     Calendar* fCalendar;
00633 
00640     NumberFormat* fNumberFormat;
00641 
00642 private:
00651     static DateFormat* create(EStyle timeStyle, EStyle dateStyle, const Locale&);
00652 };
00653 
00654 inline UnicodeString&
00655 DateFormat::format(const Formattable& obj,
00656                    UnicodeString& appendTo,
00657                    UErrorCode& status) const {
00658     return Format::format(obj, appendTo, status);
00659 }
00660 U_NAMESPACE_END
00661 
00662 #endif /* #if !UCONFIG_NO_FORMATTING */
00663 
00664 #endif // _DATEFMT
00665 //eof

Generated on Wed May 18 17:29:14 2005 for ICU 2.8 by  doxygen 1.4.2