ICU 55.1  55.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
reldatefmt.h
Go to the documentation of this file.
1 /*
2 *****************************************************************************
3 * Copyright (C) 2014-2015, International Business Machines Corporation and
4 * others.
5 * All Rights Reserved.
6 *****************************************************************************
7 *
8 * File RELDATEFMT.H
9 *****************************************************************************
10 */
11 
12 #ifndef __RELDATEFMT_H
13 #define __RELDATEFMT_H
14 
15 #include "unicode/utypes.h"
16 #include "unicode/uobject.h"
18 #include "unicode/locid.h"
19 
25 #if !UCONFIG_NO_FORMATTING && !UCONFIG_NO_BREAK_ITERATION
26 
27 #ifndef U_HIDE_DRAFT_API
28 
34 
40 
46 
52 
59 
60 #endif /* U_HIDE_DRAFT_API */
61 
67 typedef enum UDateRelativeUnit {
68 
74 
80 
86 
92 
98 
104 
110 
117 
122 typedef enum UDateAbsoluteUnit {
123 
124  // Days of week have to remain together and in order from Sunday to
125  // Saturday.
131 
137 
143 
149 
155 
161 
167 
173 
179 
185 
191 
197 
204 
210 typedef enum UDateDirection {
211 
217 
223 
229 
235 
241 
247 
254 
255 
257 
258 class RelativeDateTimeCacheData;
259 class SharedNumberFormat;
260 class SharedPluralRules;
261 class SharedBreakIterator;
262 class NumberFormat;
263 class UnicodeString;
264 
334 public:
335 
341 
346  RelativeDateTimeFormatter(const Locale& locale, UErrorCode& status);
347 
359  const Locale& locale, NumberFormat *nfToAdopt, UErrorCode& status);
360 
361 #ifndef U_HIDE_DRAFT_API
362 
378  const Locale& locale,
379  NumberFormat *nfToAdopt,
381  UDisplayContext capitalizationContext,
382  UErrorCode& status);
383 #endif /* U_HIDE_DRAFT_API */
384 
390 
395  RelativeDateTimeFormatter& operator=(
396  const RelativeDateTimeFormatter& other);
397 
402  virtual ~RelativeDateTimeFormatter();
403 
419  UnicodeString& format(
420  double quantity,
421  UDateDirection direction,
422  UDateRelativeUnit unit,
423  UnicodeString& appendTo,
424  UErrorCode& status) const;
425 
438  UnicodeString& format(
439  UDateDirection direction,
440  UDateAbsoluteUnit unit,
441  UnicodeString& appendTo,
442  UErrorCode& status) const;
443 
456  UnicodeString& combineDateAndTime(
457  const UnicodeString& relativeDateString,
458  const UnicodeString& timeString,
459  UnicodeString& appendTo,
460  UErrorCode& status) const;
461 
467  const NumberFormat& getNumberFormat() const;
468 
469 #ifndef U_HIDE_DRAFT_API
470 
475  UDisplayContext getCapitalizationContext() const;
476 
482  UDateRelativeDateTimeFormatterStyle getFormatStyle() const;
483 #endif /* U_HIDE_DRAFT_API */
484 
485 private:
486  const RelativeDateTimeCacheData* fCache;
487  const SharedNumberFormat *fNumberFormat;
488  const SharedPluralRules *fPluralRules;
490  UDisplayContext fContext;
491  const SharedBreakIterator *fOptBreakIterator;
492  Locale fLocale;
493  void init(
494  NumberFormat *nfToAdopt,
495  BreakIterator *brkIter,
496  UErrorCode &status);
497  void adjustForContext(UnicodeString &) const;
498 };
499 
501 
502 #endif /* !UCONFIG_NO_FORMATTING && !UCONFIG_NO_BREAK_ITERATION*/
503 #endif