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_DEPRECATED_API
00169
00173 UDAT_ABSOLUTE_UNIT_COUNT
00174 #endif // U_HIDE_DEPRECATED_API
00175 } UDateAbsoluteUnit;
00176
00182 typedef enum UDateDirection {
00183
00188 UDAT_DIRECTION_LAST_2,
00189
00194 UDAT_DIRECTION_LAST,
00195
00200 UDAT_DIRECTION_THIS,
00201
00206 UDAT_DIRECTION_NEXT,
00207
00212 UDAT_DIRECTION_NEXT_2,
00213
00218 UDAT_DIRECTION_PLAIN,
00219
00220 #ifndef U_HIDE_DEPRECATED_API
00221
00225 UDAT_DIRECTION_COUNT
00226 #endif // U_HIDE_DEPRECATED_API
00227 } UDateDirection;
00228
00229 #if !UCONFIG_NO_BREAK_ITERATION
00230
00231 U_NAMESPACE_BEGIN
00232
00233 class BreakIterator;
00234 class RelativeDateTimeCacheData;
00235 class SharedNumberFormat;
00236 class SharedPluralRules;
00237 class SharedBreakIterator;
00238 class NumberFormat;
00239 class UnicodeString;
00240
00309 class U_I18N_API RelativeDateTimeFormatter : public UObject {
00310 public:
00311
00316 RelativeDateTimeFormatter(UErrorCode& status);
00317
00322 RelativeDateTimeFormatter(const Locale& locale, UErrorCode& status);
00323
00334 RelativeDateTimeFormatter(
00335 const Locale& locale, NumberFormat *nfToAdopt, UErrorCode& status);
00336
00352 RelativeDateTimeFormatter(
00353 const Locale& locale,
00354 NumberFormat *nfToAdopt,
00355 UDateRelativeDateTimeFormatterStyle style,
00356 UDisplayContext capitalizationContext,
00357 UErrorCode& status);
00358
00363 RelativeDateTimeFormatter(const RelativeDateTimeFormatter& other);
00364
00369 RelativeDateTimeFormatter& operator=(
00370 const RelativeDateTimeFormatter& other);
00371
00376 virtual ~RelativeDateTimeFormatter();
00377
00393 UnicodeString& format(
00394 double quantity,
00395 UDateDirection direction,
00396 UDateRelativeUnit unit,
00397 UnicodeString& appendTo,
00398 UErrorCode& status) const;
00399
00412 UnicodeString& format(
00413 UDateDirection direction,
00414 UDateAbsoluteUnit unit,
00415 UnicodeString& appendTo,
00416 UErrorCode& status) const;
00417
00435 UnicodeString& formatNumeric(
00436 double offset,
00437 URelativeDateTimeUnit unit,
00438 UnicodeString& appendTo,
00439 UErrorCode& status) const;
00440
00458 UnicodeString& format(
00459 double offset,
00460 URelativeDateTimeUnit unit,
00461 UnicodeString& appendTo,
00462 UErrorCode& status) const;
00463
00476 UnicodeString& combineDateAndTime(
00477 const UnicodeString& relativeDateString,
00478 const UnicodeString& timeString,
00479 UnicodeString& appendTo,
00480 UErrorCode& status) const;
00481
00487 const NumberFormat& getNumberFormat() const;
00488
00494 UDisplayContext getCapitalizationContext() const;
00495
00501 UDateRelativeDateTimeFormatterStyle getFormatStyle() const;
00502
00503 private:
00504 const RelativeDateTimeCacheData* fCache;
00505 const SharedNumberFormat *fNumberFormat;
00506 const SharedPluralRules *fPluralRules;
00507 UDateRelativeDateTimeFormatterStyle fStyle;
00508 UDisplayContext fContext;
00509 const SharedBreakIterator *fOptBreakIterator;
00510 Locale fLocale;
00511 void init(
00512 NumberFormat *nfToAdopt,
00513 BreakIterator *brkIter,
00514 UErrorCode &status);
00515 void adjustForContext(UnicodeString &) const;
00516 };
00517
00518 U_NAMESPACE_END
00519
00520 #endif
00521 #endif
00522 #endif