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

datefmt.h

00001 /*
00002 ********************************************************************************
00003 *   Copyright (C) 1997-2004, 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/udat.h"
00027 #include "unicode/calendar.h"
00028 #include "unicode/numfmt.h"
00029 #include "unicode/format.h"
00030 #include "unicode/locid.h"
00031 
00032 U_NAMESPACE_BEGIN
00033 
00034 class TimeZone;
00035 
00132 class U_I18N_API DateFormat : public Format {
00133 public:
00134 
00142     enum EStyle
00143     {
00144         kNone   = -1,
00145 
00146         kFull   = 0,
00147         kLong   = 1,
00148         kMedium = 2,
00149         kShort  = 3,
00150 
00151         kDateOffset   = kShort + 1,
00152      // kFull   + kDateOffset = 4
00153      // kLong   + kDateOffset = 5
00154      // kMedium + kDateOffset = 6
00155      // kShort  + kDateOffset = 7
00156 
00157         kDateTime             = 8,
00158 
00159         kDefault      = kMedium,
00160 
00161 
00162 
00167         FULL        = kFull,
00168         LONG        = kLong,
00169         MEDIUM        = kMedium,
00170         SHORT        = kShort,
00171         DEFAULT        = kDefault,
00172         DATE_OFFSET    = kDateOffset,
00173         NONE        = kNone,
00174         DATE_TIME    = kDateTime
00175     };
00176 
00181     virtual ~DateFormat();
00182 
00187     virtual UBool operator==(const Format&) const;
00188 
00203     virtual UnicodeString& format(const Formattable& obj,
00204                                   UnicodeString& appendTo,
00205                                   FieldPosition& pos,
00206                                   UErrorCode& status) const;
00207 
00237     virtual UnicodeString& format(  Calendar& cal,
00238                                     UnicodeString& appendTo,
00239                                     FieldPosition& fieldPosition) const = 0;
00240 
00268     UnicodeString& format(  UDate date,
00269                             UnicodeString& appendTo,
00270                             FieldPosition& fieldPosition) const;
00271 
00283     UnicodeString& format(UDate date, UnicodeString& appendTo) const;
00284 
00295     UnicodeString& format(const Formattable& obj,
00296                           UnicodeString& appendTo,
00297                           UErrorCode& status) const;
00298 
00309     virtual UDate parse( const UnicodeString& text,
00310                         UErrorCode& status) const;
00311 
00333     virtual void parse( const UnicodeString& text,
00334                         Calendar& cal,
00335                         ParsePosition& pos) const = 0;
00336 
00356     UDate parse( const UnicodeString& text,
00357                  ParsePosition& pos) const;
00358 
00385     virtual void parseObject(const UnicodeString& source,
00386                              Formattable& result,
00387                              ParsePosition& parse_pos) const;
00388 
00396     static DateFormat* U_EXPORT2 createInstance(void);
00397 
00408     static DateFormat* U_EXPORT2 createTimeInstance(EStyle style = kDefault,
00409                                           const Locale& aLocale = Locale::getDefault());
00410 
00421     static DateFormat* U_EXPORT2 createDateInstance(EStyle style = kDefault,
00422                                           const Locale& aLocale = Locale::getDefault());
00423 
00436     static DateFormat* U_EXPORT2 createDateTimeInstance(EStyle dateStyle = kDefault,
00437                                               EStyle timeStyle = kDefault,
00438                                               const Locale& aLocale = Locale::getDefault());
00439 
00447     static const Locale* U_EXPORT2 getAvailableLocales(int32_t& count);
00448 
00453     virtual UBool isLenient(void) const;
00454 
00465     virtual void setLenient(UBool lenient);
00466 
00472     virtual const Calendar* getCalendar(void) const;
00473 
00483     virtual void adoptCalendar(Calendar* calendarToAdopt);
00484 
00492     virtual void setCalendar(const Calendar& newCalendar);
00493 
00494 
00501     virtual const NumberFormat* getNumberFormat(void) const;
00502 
00509     virtual void adoptNumberFormat(NumberFormat* formatToAdopt);
00510 
00516     virtual void setNumberFormat(const NumberFormat& newNumberFormat);
00517 
00523     virtual const TimeZone& getTimeZone(void) const;
00524 
00531     virtual void adoptTimeZone(TimeZone* zoneToAdopt);
00532 
00538     virtual void setTimeZone(const TimeZone& zone);
00539 
00540 protected:
00547     DateFormat();
00548 
00553     DateFormat(const DateFormat&);
00554 
00559     DateFormat& operator=(const DateFormat&);
00560 
00567     Calendar* fCalendar;
00568 
00575     NumberFormat* fNumberFormat;
00576 
00577 private:
00586     static DateFormat* U_EXPORT2 create(EStyle timeStyle, EStyle dateStyle, const Locale&);
00587 
00588 public:
00594     enum EField
00595     {
00596         // Obsolete; use UDateFormatField instead
00597         kEraField = UDAT_ERA_FIELD,
00598         kYearField = UDAT_YEAR_FIELD,
00599         kMonthField = UDAT_MONTH_FIELD,
00600         kDateField = UDAT_DATE_FIELD,
00601         kHourOfDay1Field = UDAT_HOUR_OF_DAY1_FIELD,
00602         kHourOfDay0Field = UDAT_HOUR_OF_DAY0_FIELD,
00603         kMinuteField = UDAT_MINUTE_FIELD,
00604         kSecondField = UDAT_SECOND_FIELD,
00605         kMillisecondField = UDAT_FRACTIONAL_SECOND_FIELD,
00606         kDayOfWeekField = UDAT_DAY_OF_WEEK_FIELD,
00607         kDayOfYearField = UDAT_DAY_OF_YEAR_FIELD,
00608         kDayOfWeekInMonthField = UDAT_DAY_OF_WEEK_IN_MONTH_FIELD,
00609         kWeekOfYearField = UDAT_WEEK_OF_YEAR_FIELD,
00610         kWeekOfMonthField = UDAT_WEEK_OF_MONTH_FIELD,
00611         kAmPmField = UDAT_AM_PM_FIELD,
00612         kHour1Field = UDAT_HOUR1_FIELD,
00613         kHour0Field = UDAT_HOUR0_FIELD,
00614         kTimezoneField = UDAT_TIMEZONE_FIELD,
00615         kYearWOYField = UDAT_YEAR_WOY_FIELD,
00616         kDOWLocalField = UDAT_DOW_LOCAL_FIELD,
00617         kExtendedYearField = UDAT_EXTENDED_YEAR_FIELD,
00618         kJulianDayField = UDAT_JULIAN_DAY_FIELD,
00619         kMillisecondsInDayField = UDAT_MILLISECONDS_IN_DAY_FIELD,
00620 
00621         // Obsolete; use UDateFormatField instead
00622         ERA_FIELD = UDAT_ERA_FIELD,
00623         YEAR_FIELD = UDAT_YEAR_FIELD,
00624         MONTH_FIELD = UDAT_MONTH_FIELD,
00625         DATE_FIELD = UDAT_DATE_FIELD,
00626         HOUR_OF_DAY1_FIELD = UDAT_HOUR_OF_DAY1_FIELD,
00627         HOUR_OF_DAY0_FIELD = UDAT_HOUR_OF_DAY0_FIELD,
00628         MINUTE_FIELD = UDAT_MINUTE_FIELD,
00629         SECOND_FIELD = UDAT_SECOND_FIELD,
00630         MILLISECOND_FIELD = UDAT_FRACTIONAL_SECOND_FIELD,
00631         DAY_OF_WEEK_FIELD = UDAT_DAY_OF_WEEK_FIELD,
00632         DAY_OF_YEAR_FIELD = UDAT_DAY_OF_YEAR_FIELD,
00633         DAY_OF_WEEK_IN_MONTH_FIELD = UDAT_DAY_OF_WEEK_IN_MONTH_FIELD,
00634         WEEK_OF_YEAR_FIELD = UDAT_WEEK_OF_YEAR_FIELD,
00635         WEEK_OF_MONTH_FIELD = UDAT_WEEK_OF_MONTH_FIELD,
00636         AM_PM_FIELD = UDAT_AM_PM_FIELD,
00637         HOUR1_FIELD = UDAT_HOUR1_FIELD,
00638         HOUR0_FIELD = UDAT_HOUR0_FIELD,
00639         TIMEZONE_FIELD = UDAT_TIMEZONE_FIELD
00640     };
00641 };
00642 
00643 inline UnicodeString&
00644 DateFormat::format(const Formattable& obj,
00645                    UnicodeString& appendTo,
00646                    UErrorCode& status) const {
00647     return Format::format(obj, appendTo, status);
00648 }
00649 U_NAMESPACE_END
00650 
00651 #endif /* #if !UCONFIG_NO_FORMATTING */
00652 
00653 #endif // _DATEFMT
00654 //eof

Generated on Tue Jul 26 00:39:56 2005 for ICU 3.2 by  doxygen 1.3.9.1