00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014 #ifndef __RELDATEFMT_H
00015 #define __RELDATEFMT_H
00016
00017 #include "unicode/utypes.h"
00018 #include "unicode/uobject.h"
00019 #include "unicode/udisplaycontext.h"
00020 #include "unicode/ureldatefmt.h"
00021 #include "unicode/locid.h"
00022
00028 #if !UCONFIG_NO_FORMATTING
00029
00035 typedef enum UDateRelativeUnit {
00036
00041 UDAT_RELATIVE_SECONDS,
00042
00047 UDAT_RELATIVE_MINUTES,
00048
00053 UDAT_RELATIVE_HOURS,
00054
00059 UDAT_RELATIVE_DAYS,
00060
00065 UDAT_RELATIVE_WEEKS,
00066
00071 UDAT_RELATIVE_MONTHS,
00072
00077 UDAT_RELATIVE_YEARS,
00078
00079 #ifndef U_HIDE_DEPRECATED_API
00080
00084 UDAT_RELATIVE_UNIT_COUNT
00085 #endif // U_HIDE_DEPRECATED_API
00086 } UDateRelativeUnit;
00087
00092 typedef enum UDateAbsoluteUnit {
00093
00094
00095
00100 UDAT_ABSOLUTE_SUNDAY,
00101
00106 UDAT_ABSOLUTE_MONDAY,
00107
00112 UDAT_ABSOLUTE_TUESDAY,
00113
00118 UDAT_ABSOLUTE_WEDNESDAY,
00119
00124 UDAT_ABSOLUTE_THURSDAY,
00125
00130 UDAT_ABSOLUTE_FRIDAY,
00131
00136 UDAT_ABSOLUTE_SATURDAY,
00137
00142 UDAT_ABSOLUTE_DAY,
00143
00148 UDAT_ABSOLUTE_WEEK,
00149
00154 UDAT_ABSOLUTE_MONTH,
00155
00160 UDAT_ABSOLUTE_YEAR,
00161
00166 UDAT_ABSOLUTE_NOW,
00167
00168 #ifndef U_HIDE_DRAFT_API
00169
00173 UDAT_ABSOLUTE_QUARTER,
00174 #endif // U_HIDE_DRAFT_API
00175
00176 #ifndef U_HIDE_DEPRECATED_API
00177
00181 UDAT_ABSOLUTE_UNIT_COUNT = UDAT_ABSOLUTE_NOW + 2
00182 #endif // U_HIDE_DEPRECATED_API
00183 } UDateAbsoluteUnit;
00184
00190 typedef enum UDateDirection {
00191
00196 UDAT_DIRECTION_LAST_2,
00197
00202 UDAT_DIRECTION_LAST,
00203
00208 UDAT_DIRECTION_THIS,
00209
00214 UDAT_DIRECTION_NEXT,
00215
00220 UDAT_DIRECTION_NEXT_2,
00221
00226 UDAT_DIRECTION_PLAIN,
00227
00228 #ifndef U_HIDE_DEPRECATED_API
00229
00233 UDAT_DIRECTION_COUNT
00234 #endif // U_HIDE_DEPRECATED_API
00235 } UDateDirection;
00236
00237 #if !UCONFIG_NO_BREAK_ITERATION
00238
00239 U_NAMESPACE_BEGIN
00240
00241 class BreakIterator;
00242 class RelativeDateTimeCacheData;
00243 class SharedNumberFormat;
00244 class SharedPluralRules;
00245 class SharedBreakIterator;
00246 class NumberFormat;
00247 class UnicodeString;
00248
00317 class U_I18N_API RelativeDateTimeFormatter : public UObject {
00318 public:
00319
00324 RelativeDateTimeFormatter(UErrorCode& status);
00325
00330 RelativeDateTimeFormatter(const Locale& locale, UErrorCode& status);
00331
00342 RelativeDateTimeFormatter(
00343 const Locale& locale, NumberFormat *nfToAdopt, UErrorCode& status);
00344
00360 RelativeDateTimeFormatter(
00361 const Locale& locale,
00362 NumberFormat *nfToAdopt,
00363 UDateRelativeDateTimeFormatterStyle style,
00364 UDisplayContext capitalizationContext,
00365 UErrorCode& status);
00366
00371 RelativeDateTimeFormatter(const RelativeDateTimeFormatter& other);
00372
00377 RelativeDateTimeFormatter& operator=(
00378 const RelativeDateTimeFormatter& other);
00379
00384 virtual ~RelativeDateTimeFormatter();
00385
00401 UnicodeString& format(
00402 double quantity,
00403 UDateDirection direction,
00404 UDateRelativeUnit unit,
00405 UnicodeString& appendTo,
00406 UErrorCode& status) const;
00407
00420 UnicodeString& format(
00421 UDateDirection direction,
00422 UDateAbsoluteUnit unit,
00423 UnicodeString& appendTo,
00424 UErrorCode& status) const;
00425
00443 UnicodeString& formatNumeric(
00444 double offset,
00445 URelativeDateTimeUnit unit,
00446 UnicodeString& appendTo,
00447 UErrorCode& status) const;
00448
00466 UnicodeString& format(
00467 double offset,
00468 URelativeDateTimeUnit unit,
00469 UnicodeString& appendTo,
00470 UErrorCode& status) const;
00471
00484 UnicodeString& combineDateAndTime(
00485 const UnicodeString& relativeDateString,
00486 const UnicodeString& timeString,
00487 UnicodeString& appendTo,
00488 UErrorCode& status) const;
00489
00495 const NumberFormat& getNumberFormat() const;
00496
00502 UDisplayContext getCapitalizationContext() const;
00503
00509 UDateRelativeDateTimeFormatterStyle getFormatStyle() const;
00510
00511 private:
00512 const RelativeDateTimeCacheData* fCache;
00513 const SharedNumberFormat *fNumberFormat;
00514 const SharedPluralRules *fPluralRules;
00515 UDateRelativeDateTimeFormatterStyle fStyle;
00516 UDisplayContext fContext;
00517 const SharedBreakIterator *fOptBreakIterator;
00518 Locale fLocale;
00519 void init(
00520 NumberFormat *nfToAdopt,
00521 BreakIterator *brkIter,
00522 UErrorCode &status);
00523 void adjustForContext(UnicodeString &) const;
00524 };
00525
00526 U_NAMESPACE_END
00527
00528 #endif
00529 #endif
00530 #endif