ICU 54.1  54.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, 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 
65 typedef enum UDateRelativeUnit {
66 
72 
78 
84 
90 
96 
102 
108 
115 
120 typedef enum UDateAbsoluteUnit {
121 
122  // Days of week have to remain together and in order from Sunday to
123  // Saturday.
129 
135 
141 
147 
153 
159 
165 
171 
177 
183 
189 
195 
202 
208 typedef enum UDateDirection {
209 
215 
221 
227 
233 
239 
245 
252 
253 
255 
256 class RelativeDateTimeCacheData;
257 class SharedNumberFormat;
258 class SharedPluralRules;
259 class SharedBreakIterator;
260 class NumberFormat;
261 class UnicodeString;
262 
332 public:
333 
339 
344  RelativeDateTimeFormatter(const Locale& locale, UErrorCode& status);
345 
357  const Locale& locale, NumberFormat *nfToAdopt, UErrorCode& status);
358 
375  const Locale& locale,
376  NumberFormat *nfToAdopt,
378  UDisplayContext capitalizationContext,
379  UErrorCode& status);
380 
386 
391  RelativeDateTimeFormatter& operator=(
392  const RelativeDateTimeFormatter& other);
393 
398  virtual ~RelativeDateTimeFormatter();
399 
415  UnicodeString& format(
416  double quantity,
417  UDateDirection direction,
418  UDateRelativeUnit unit,
419  UnicodeString& appendTo,
420  UErrorCode& status) const;
421 
434  UnicodeString& format(
435  UDateDirection direction,
436  UDateAbsoluteUnit unit,
437  UnicodeString& appendTo,
438  UErrorCode& status) const;
439 
452  UnicodeString& combineDateAndTime(
453  const UnicodeString& relativeDateString,
454  const UnicodeString& timeString,
455  UnicodeString& appendTo,
456  UErrorCode& status) const;
457 
463  const NumberFormat& getNumberFormat() const;
464 
470  UDisplayContext getCapitalizationContext() const;
471 
477  UDateRelativeDateTimeFormatterStyle getFormatStyle() const;
478 private:
479  const RelativeDateTimeCacheData* fCache;
480  const SharedNumberFormat *fNumberFormat;
481  const SharedPluralRules *fPluralRules;
483  UDisplayContext fContext;
484  const SharedBreakIterator *fOptBreakIterator;
485  Locale fLocale;
486  void init(
487  NumberFormat *nfToAdopt,
488  BreakIterator *brkIter,
489  UErrorCode &status);
490  void adjustForContext(UnicodeString &) const;
491 };
492 
494 
495 #endif /* U_HIDE_DRAFT_API */
496 
497 #endif /* !UCONFIG_NO_FORMATTING && !UCONFIG_NO_BREAK_ITERATION*/
498 #endif