ICU 56.1  56.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 
37 
43 
49 
56 
62 typedef enum UDateRelativeUnit {
63 
69 
75 
81 
87 
93 
99 
105 
112 
117 typedef enum UDateAbsoluteUnit {
118 
119  // Days of week have to remain together and in order from Sunday to
120  // Saturday.
126 
132 
138 
144 
150 
156 
162 
168 
174 
180 
186 
192 
199 
205 typedef enum UDateDirection {
206 
212 
218 
224 
230 
236 
242 
249 
250 
252 
253 class RelativeDateTimeCacheData;
254 class SharedNumberFormat;
255 class SharedPluralRules;
256 class SharedBreakIterator;
257 class NumberFormat;
258 class UnicodeString;
259 
329 public:
330 
336 
341  RelativeDateTimeFormatter(const Locale& locale, UErrorCode& status);
342 
354  const Locale& locale, NumberFormat *nfToAdopt, UErrorCode& status);
355 
372  const Locale& locale,
373  NumberFormat *nfToAdopt,
375  UDisplayContext capitalizationContext,
376  UErrorCode& status);
377 
383 
388  RelativeDateTimeFormatter& operator=(
389  const RelativeDateTimeFormatter& other);
390 
395  virtual ~RelativeDateTimeFormatter();
396 
412  UnicodeString& format(
413  double quantity,
414  UDateDirection direction,
415  UDateRelativeUnit unit,
416  UnicodeString& appendTo,
417  UErrorCode& status) const;
418 
431  UnicodeString& format(
432  UDateDirection direction,
433  UDateAbsoluteUnit unit,
434  UnicodeString& appendTo,
435  UErrorCode& status) const;
436 
449  UnicodeString& combineDateAndTime(
450  const UnicodeString& relativeDateString,
451  const UnicodeString& timeString,
452  UnicodeString& appendTo,
453  UErrorCode& status) const;
454 
460  const NumberFormat& getNumberFormat() const;
461 
467  UDisplayContext getCapitalizationContext() const;
468 
474  UDateRelativeDateTimeFormatterStyle getFormatStyle() const;
475 
476 private:
477  const RelativeDateTimeCacheData* fCache;
478  const SharedNumberFormat *fNumberFormat;
479  const SharedPluralRules *fPluralRules;
481  UDisplayContext fContext;
482  const SharedBreakIterator *fOptBreakIterator;
483  Locale fLocale;
484  void init(
485  NumberFormat *nfToAdopt,
486  BreakIterator *brkIter,
487  UErrorCode &status);
488  void adjustForContext(UnicodeString &) const;
489 };
490 
492 
493 #endif /* !UCONFIG_NO_FORMATTING && !UCONFIG_NO_BREAK_ITERATION*/
494 #endif