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
#include "unicode/calendar.h"
00024
#include "unicode/numfmt.h"
00025
#include "unicode/format.h"
00026
#include "unicode/locid.h"
00027
00028 U_NAMESPACE_BEGIN
00029
00030
class TimeZone;
00031
00124 class U_I18N_API DateFormat :
public Format {
00125
public:
00136 enum EField
00137 {
00138 kEraField = 0,
00139 kYearField,
00140 kMonthField,
00141 kDateField,
00142 kHourOfDay1Field,
00143
00144
00145 kHourOfDay0Field,
00146
00147
00148 kMinuteField,
00149 kSecondField,
00150 kMillisecondField,
00151 kDayOfWeekField,
00152 kDayOfYearField,
00153 kDayOfWeekInMonthField,
00154 kWeekOfYearField,
00155 kWeekOfMonthField,
00156 kAmPmField,
00157 kHour1Field,
00158
00159
00160 kHour0Field,
00161
00162
00163 kTimezoneField,
00164 kYearWOYField,
00165 kDOWLocalField,
00166
00167
00168
00173 ERA_FIELD = kEraField,
00174 YEAR_FIELD = kYearField,
00175 MONTH_FIELD = kMonthField,
00176 DATE_FIELD = kDateField,
00177 HOUR_OF_DAY1_FIELD = kHourOfDay1Field,
00178 HOUR_OF_DAY0_FIELD = kHourOfDay0Field,
00179 MINUTE_FIELD = kMinuteField,
00180 SECOND_FIELD = kSecondField,
00181 MILLISECOND_FIELD = kMillisecondField,
00182 DAY_OF_WEEK_FIELD = kDayOfWeekField,
00183 DAY_OF_YEAR_FIELD = kDayOfYearField,
00184 DAY_OF_WEEK_IN_MONTH_FIELD = kDayOfWeekInMonthField,
00185 WEEK_OF_YEAR_FIELD = kWeekOfYearField,
00186 WEEK_OF_MONTH_FIELD = kWeekOfMonthField,
00187 AM_PM_FIELD = kAmPmField,
00188 HOUR1_FIELD = kHour1Field,
00189 HOUR0_FIELD = kHour0Field,
00190 TIMEZONE_FIELD = kTimezoneField
00191
00192 };
00193
00200 enum EStyle
00201 {
00202 kNone = -1,
00203
00204 kFull = 0,
00205 kLong = 1,
00206 kMedium = 2,
00207 kShort = 3,
00208
00209 kDateOffset = kShort + 1,
00210
00211
00212
00213
00214
00215 kDateTime = 8,
00216
00217 kDefault = kMedium,
00218
00219
00220
00225 FULL = kFull,
00226 LONG = kLong,
00227 MEDIUM = kMedium,
00228 SHORT = kShort,
00229 DEFAULT = kDefault,
00230 DATE_OFFSET = kDateOffset,
00231 NONE = kNone,
00232 DATE_TIME = kDateTime
00233 };
00234
00239
virtual ~DateFormat();
00240
00245
virtual UBool operator==(
const Format&) const;
00246
00262 virtual
UnicodeString& format(const
Formattable& obj,
00263
UnicodeString& toAppendTo,
00264
FieldPosition& pos,
00265 UErrorCode& status) const;
00266
00296 virtual
UnicodeString& format(
Calendar& cal,
00297
UnicodeString& toAppendTo,
00298
FieldPosition& fieldPosition) const = 0;
00299
00327
UnicodeString& format( UDate date,
00328
UnicodeString& toAppendTo,
00329
FieldPosition& fieldPosition) const;
00330
00341
UnicodeString& format(UDate date,
UnicodeString& result) const;
00342
00347
UnicodeString& format(const
Formattable& obj,
00348
UnicodeString& result,
00349 UErrorCode& status) const;
00350
00361 virtual UDate parse( const
UnicodeString& text,
00362 UErrorCode& status) const;
00363
00383 virtual
void parse( const
UnicodeString& text,
00384
Calendar& cal,
00385
ParsePosition& pos) const = 0;
00386
00406 UDate parse( const
UnicodeString& text,
00407
ParsePosition& pos) const;
00408
00435 virtual
void parseObject(const
UnicodeString& source,
00436
Formattable& result,
00437
ParsePosition& parse_pos) const;
00438
00446 static DateFormat* createInstance(
void);
00447
00458 static DateFormat* createTimeInstance(EStyle style = kDefault,
00459 const Locale& aLocale = Locale::getDefault());
00460
00471 static DateFormat* createDateInstance(EStyle style = kDefault,
00472 const Locale& aLocale = Locale::getDefault());
00473
00486 static DateFormat* createDateTimeInstance(EStyle dateStyle = kDefault,
00487 EStyle timeStyle = kDefault,
00488 const Locale& aLocale = Locale::getDefault());
00489
00497 static const Locale* getAvailableLocales(int32_t& count);
00498
00503 virtual UBool isLenient(
void) const;
00504
00513 virtual
void setLenient(UBool lenient);
00514
00520 virtual const
Calendar* getCalendar(
void) const;
00521
00528 virtual
void adoptCalendar(
Calendar* calendarToAdopt);
00529
00535 virtual
void setCalendar(const
Calendar& newCalendar);
00536
00537
00544 virtual const
NumberFormat* getNumberFormat(
void) const;
00545
00552 virtual
void adoptNumberFormat(
NumberFormat* formatToAdopt);
00553
00559 virtual
void setNumberFormat(const
NumberFormat& newNumberFormat);
00560
00566 virtual const
TimeZone& getTimeZone(
void) const;
00567
00574 virtual
void adoptTimeZone(
TimeZone* zoneToAdopt);
00575
00581 virtual
void setTimeZone(const
TimeZone& zone);
00582
00583
00584 protected:
00591 DateFormat();
00592
00597 DateFormat(const DateFormat&);
00598
00603 DateFormat& operator=(const DateFormat&);
00604
00610 Calendar* fCalendar;
00611
00617 NumberFormat* fNumberFormat;
00618
00619 private:
00628 static DateFormat* create(EStyle timeStyle, EStyle dateStyle, const Locale&);
00629 };
00630
00631 inline
UnicodeString&
00632 DateFormat::format(const
Formattable& obj,
00633
UnicodeString& result,
00634 UErrorCode& status)
const {
00635
return Format::format(obj, result, status);
00636 }
00637 U_NAMESPACE_END
00638
00639
#endif // _DATEFMT
00640