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/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
00153
00154
00155
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* createInstance(
void);
00397
00408 static DateFormat* createTimeInstance(EStyle style = kDefault,
00409 const
Locale& aLocale =
Locale::getDefault());
00410
00421 static DateFormat* createDateInstance(EStyle style = kDefault,
00422 const
Locale& aLocale =
Locale::getDefault());
00423
00436 static DateFormat* createDateTimeInstance(EStyle dateStyle = kDefault,
00437 EStyle timeStyle = kDefault,
00438 const
Locale& aLocale =
Locale::getDefault());
00439
00447 static const
Locale* 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* create(EStyle timeStyle, EStyle dateStyle, const
Locale&);
00587
00588 public:
00594 enum EField
00595 {
00596
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
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
00652
00653
#endif // _DATEFMT
00654