ICU 57.1  57.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-2016, 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/ureldatefmt.h"
19 #include "unicode/locid.h"
20 
26 #if !UCONFIG_NO_FORMATTING && !UCONFIG_NO_BREAK_ITERATION
27 
33 typedef enum UDateRelativeUnit {
34 
40 
46 
52 
58 
64 
70 
76 
83 
88 typedef enum UDateAbsoluteUnit {
89 
90  // Days of week have to remain together and in order from Sunday to
91  // Saturday.
97 
103 
109 
115 
121 
127 
133 
139 
145 
151 
157 
163 
170 
176 typedef enum UDateDirection {
177 
183 
189 
195 
201 
207 
213 
220 
221 
223 
224 class RelativeDateTimeCacheData;
225 class SharedNumberFormat;
226 class SharedPluralRules;
227 class SharedBreakIterator;
228 class NumberFormat;
229 class UnicodeString;
230 
300 public:
301 
307 
312  RelativeDateTimeFormatter(const Locale& locale, UErrorCode& status);
313 
325  const Locale& locale, NumberFormat *nfToAdopt, UErrorCode& status);
326 
343  const Locale& locale,
344  NumberFormat *nfToAdopt,
346  UDisplayContext capitalizationContext,
347  UErrorCode& status);
348 
354 
359  RelativeDateTimeFormatter& operator=(
360  const RelativeDateTimeFormatter& other);
361 
366  virtual ~RelativeDateTimeFormatter();
367 
383  UnicodeString& format(
384  double quantity,
385  UDateDirection direction,
386  UDateRelativeUnit unit,
387  UnicodeString& appendTo,
388  UErrorCode& status) const;
389 
402  UnicodeString& format(
403  UDateDirection direction,
404  UDateAbsoluteUnit unit,
405  UnicodeString& appendTo,
406  UErrorCode& status) const;
407 
408 #ifndef U_HIDE_DRAFT_API
409 
426  UnicodeString& formatNumeric(
427  double offset,
429  UnicodeString& appendTo,
430  UErrorCode& status) const;
431 
449  UnicodeString& format(
450  double offset,
452  UnicodeString& appendTo,
453  UErrorCode& status) const;
454 #endif /* U_HIDE_DRAFT_API */
455 
468  UnicodeString& combineDateAndTime(
469  const UnicodeString& relativeDateString,
470  const UnicodeString& timeString,
471  UnicodeString& appendTo,
472  UErrorCode& status) const;
473 
479  const NumberFormat& getNumberFormat() const;
480 
486  UDisplayContext getCapitalizationContext() const;
487 
493  UDateRelativeDateTimeFormatterStyle getFormatStyle() const;
494 
495 private:
496  const RelativeDateTimeCacheData* fCache;
497  const SharedNumberFormat *fNumberFormat;
498  const SharedPluralRules *fPluralRules;
500  UDisplayContext fContext;
501  const SharedBreakIterator *fOptBreakIterator;
502  Locale fLocale;
503  void init(
504  NumberFormat *nfToAdopt,
505  BreakIterator *brkIter,
506  UErrorCode &status);
507  void adjustForContext(UnicodeString &) const;
508 };
509 
511 
512 #endif /* !UCONFIG_NO_FORMATTING && !UCONFIG_NO_BREAK_ITERATION*/
513 #endif