00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
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,
00143 kYearField,
00144 kMonthField,
00145 kDateField,
00146 kHourOfDay1Field,
00147
00148
00149 kHourOfDay0Field,
00150
00151
00152 kMinuteField,
00153 kSecondField,
00154 kMillisecondField,
00155 kDayOfWeekField,
00156 kDayOfYearField,
00157 kDayOfWeekInMonthField,
00158 kWeekOfYearField,
00159 kWeekOfMonthField,
00160 kAmPmField,
00161 kHour1Field,
00162
00163
00164 kHour0Field,
00165
00166
00167 kTimezoneField,
00168 kYearWOYField,
00169 kDOWLocalField,
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
00218
00219
00220
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
00663
00664
#endif // _DATEFMT
00665