ICU 62.1  62.1
reldatefmt.h
Go to the documentation of this file.
1 // © 2016 and later: Unicode, Inc. and others.
2 // License & terms of use: http://www.unicode.org/copyright.html
3 /*
4 *****************************************************************************
5 * Copyright (C) 2014-2016, International Business Machines Corporation and
6 * others.
7 * All Rights Reserved.
8 *****************************************************************************
9 *
10 * File RELDATEFMT.H
11 *****************************************************************************
12 */
13 
14 #ifndef __RELDATEFMT_H
15 #define __RELDATEFMT_H
16 
17 #include "unicode/utypes.h"
18 #include "unicode/uobject.h"
20 #include "unicode/ureldatefmt.h"
21 #include "unicode/locid.h"
22 
28 #if !UCONFIG_NO_FORMATTING
29 
35 typedef enum UDateRelativeUnit {
36 
42 
48 
54 
60 
66 
72 
78 
79 #ifndef U_HIDE_DEPRECATED_API
80 
85 #endif // U_HIDE_DEPRECATED_API
87 
92 typedef enum UDateAbsoluteUnit {
93 
94  // Days of week have to remain together and in order from Sunday to
95  // Saturday.
101 
107 
113 
119 
125 
131 
137 
143 
149 
155 
161 
167 
168 #ifndef U_HIDE_DEPRECATED_API
169 
174 #endif // U_HIDE_DEPRECATED_API
176 
182 typedef enum UDateDirection {
183 
189 
195 
201 
207 
213 
219 
220 #ifndef U_HIDE_DEPRECATED_API
221 
226 #endif // U_HIDE_DEPRECATED_API
228 
229 #if !UCONFIG_NO_BREAK_ITERATION
230 
232 
233 class BreakIterator;
234 class RelativeDateTimeCacheData;
235 class SharedNumberFormat;
236 class SharedPluralRules;
237 class SharedBreakIterator;
238 class NumberFormat;
239 class UnicodeString;
240 
310 public:
311 
317 
322  RelativeDateTimeFormatter(const Locale& locale, UErrorCode& status);
323 
335  const Locale& locale, NumberFormat *nfToAdopt, UErrorCode& status);
336 
353  const Locale& locale,
354  NumberFormat *nfToAdopt,
356  UDisplayContext capitalizationContext,
357  UErrorCode& status);
358 
364 
369  RelativeDateTimeFormatter& operator=(
370  const RelativeDateTimeFormatter& other);
371 
376  virtual ~RelativeDateTimeFormatter();
377 
393  UnicodeString& format(
394  double quantity,
395  UDateDirection direction,
396  UDateRelativeUnit unit,
397  UnicodeString& appendTo,
398  UErrorCode& status) const;
399 
412  UnicodeString& format(
413  UDateDirection direction,
414  UDateAbsoluteUnit unit,
415  UnicodeString& appendTo,
416  UErrorCode& status) const;
417 
435  UnicodeString& formatNumeric(
436  double offset,
438  UnicodeString& appendTo,
439  UErrorCode& status) const;
440 
458  UnicodeString& format(
459  double offset,
461  UnicodeString& appendTo,
462  UErrorCode& status) const;
463 
476  UnicodeString& combineDateAndTime(
477  const UnicodeString& relativeDateString,
478  const UnicodeString& timeString,
479  UnicodeString& appendTo,
480  UErrorCode& status) const;
481 
487  const NumberFormat& getNumberFormat() const;
488 
494  UDisplayContext getCapitalizationContext() const;
495 
501  UDateRelativeDateTimeFormatterStyle getFormatStyle() const;
502 
503 private:
504  const RelativeDateTimeCacheData* fCache;
505  const SharedNumberFormat *fNumberFormat;
506  const SharedPluralRules *fPluralRules;
508  UDisplayContext fContext;
509  const SharedBreakIterator *fOptBreakIterator;
510  Locale fLocale;
511  void init(
512  NumberFormat *nfToAdopt,
513  BreakIterator *brkIter,
514  UErrorCode &status);
515  void adjustForContext(UnicodeString &) const;
516 };
517 
519 
520 #endif /* !UCONFIG_NO_BREAK_ITERATION */
521 #endif /* !UCONFIG_NO_FORMATTING */
522 #endif /* __RELDATEFMT_H */
UDAT_ABSOLUTE_WEDNESDAY
@ UDAT_ABSOLUTE_WEDNESDAY
Wednesday.
Definition: reldatefmt.h:118
UDAT_DIRECTION_LAST
@ UDAT_DIRECTION_LAST
Last.
Definition: reldatefmt.h:194
UDAT_RELATIVE_SECONDS
@ UDAT_RELATIVE_SECONDS
Seconds.
Definition: reldatefmt.h:41
icu::BreakIterator
The BreakIterator class implements methods for finding the location of boundaries in text.
Definition: brkiter.h:102
icu::NumberFormat
Definition: numfmt.h:174
icu::RelativeDateTimeFormatter
Formats simple relative dates.
Definition: reldatefmt.h:309
UDAT_RELATIVE_MONTHS
@ UDAT_RELATIVE_MONTHS
Months.
Definition: reldatefmt.h:71
UDAT_ABSOLUTE_TUESDAY
@ UDAT_ABSOLUTE_TUESDAY
Tuesday.
Definition: reldatefmt.h:112
utypes.h
Basic definitions for ICU, for both C and C++ APIs.
UDAT_RELATIVE_MINUTES
@ UDAT_RELATIVE_MINUTES
Minutes.
Definition: reldatefmt.h:47
U_I18N_API
#define U_I18N_API
Definition: utypes.h:360
URelativeDateTimeUnit
URelativeDateTimeUnit
Represents the unit for formatting a relative date.
Definition: ureldatefmt.h:77
UDAT_ABSOLUTE_YEAR
@ UDAT_ABSOLUTE_YEAR
Year.
Definition: reldatefmt.h:160
UDAT_RELATIVE_YEARS
@ UDAT_RELATIVE_YEARS
Years.
Definition: reldatefmt.h:77
UDAT_RELATIVE_HOURS
@ UDAT_RELATIVE_HOURS
Hours.
Definition: reldatefmt.h:53
UDAT_DIRECTION_COUNT
@ UDAT_DIRECTION_COUNT
One more than the highest normal UDateDirection value.
Definition: reldatefmt.h:225
UDAT_ABSOLUTE_MONDAY
@ UDAT_ABSOLUTE_MONDAY
Monday.
Definition: reldatefmt.h:106
UDAT_ABSOLUTE_WEEK
@ UDAT_ABSOLUTE_WEEK
Week.
Definition: reldatefmt.h:148
UDAT_RELATIVE_DAYS
@ UDAT_RELATIVE_DAYS
Days.
Definition: reldatefmt.h:59
UDAT_ABSOLUTE_FRIDAY
@ UDAT_ABSOLUTE_FRIDAY
Friday.
Definition: reldatefmt.h:130
icu::UnicodeString
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:286
ureldatefmt.h
C API: URelativeDateTimeFormatter, relative date formatting of unit + numeric offset.
UDateDirection
UDateDirection
Represents a direction for an absolute unit e.g "Next Tuesday" or "Last Tuesday".
Definition: reldatefmt.h:182
icu::UObject
UObject is the common ICU "boilerplate" class.
Definition: uobject.h:223
UErrorCode
UErrorCode
Error code to replace exception handling, so that the code is compatible with all C++ compilers,...
Definition: utypes.h:396
UDAT_ABSOLUTE_DAY
@ UDAT_ABSOLUTE_DAY
Day.
Definition: reldatefmt.h:142
UDAT_DIRECTION_THIS
@ UDAT_DIRECTION_THIS
This.
Definition: reldatefmt.h:200
UDAT_ABSOLUTE_SUNDAY
@ UDAT_ABSOLUTE_SUNDAY
Sunday.
Definition: reldatefmt.h:100
UDAT_DIRECTION_PLAIN
@ UDAT_DIRECTION_PLAIN
Plain, which means the absence of a qualifier.
Definition: reldatefmt.h:218
UDAT_ABSOLUTE_SATURDAY
@ UDAT_ABSOLUTE_SATURDAY
Saturday.
Definition: reldatefmt.h:136
UDAT_RELATIVE_UNIT_COUNT
@ UDAT_RELATIVE_UNIT_COUNT
One more than the highest normal UDateRelativeUnit value.
Definition: reldatefmt.h:84
UDAT_RELATIVE_WEEKS
@ UDAT_RELATIVE_WEEKS
Weeks.
Definition: reldatefmt.h:65
UDisplayContext
UDisplayContext
Display context settings.
Definition: udisplaycontext.h:64
UDAT_ABSOLUTE_MONTH
@ UDAT_ABSOLUTE_MONTH
Month.
Definition: reldatefmt.h:154
UDAT_DIRECTION_LAST_2
@ UDAT_DIRECTION_LAST_2
Two before.
Definition: reldatefmt.h:188
UDateAbsoluteUnit
UDateAbsoluteUnit
Represents an absolute unit.
Definition: reldatefmt.h:92
UDAT_DIRECTION_NEXT
@ UDAT_DIRECTION_NEXT
Next.
Definition: reldatefmt.h:206
UDAT_ABSOLUTE_UNIT_COUNT
@ UDAT_ABSOLUTE_UNIT_COUNT
One more than the highest normal UDateAbsoluteUnit value.
Definition: reldatefmt.h:173
udisplaycontext.h
C API: Display context types (enum values)
locid.h
C++ API: Locale ID object.
UDateRelativeDateTimeFormatterStyle
UDateRelativeDateTimeFormatterStyle
The formatting style.
Definition: ureldatefmt.h:44
UDateRelativeUnit
UDateRelativeUnit
Represents the unit for formatting a relative date.
Definition: reldatefmt.h:35
uobject.h
C++ API: Common ICU base class UObject.
U_NAMESPACE_END
#define U_NAMESPACE_END
Definition: uversion.h:138
U_NAMESPACE_BEGIN
#define U_NAMESPACE_BEGIN
Definition: uversion.h:137
UDAT_ABSOLUTE_NOW
@ UDAT_ABSOLUTE_NOW
Now.
Definition: reldatefmt.h:166
icu::Locale
A Locale object represents a specific geographical, political, or cultural region.
Definition: locid.h:188
UDAT_DIRECTION_NEXT_2
@ UDAT_DIRECTION_NEXT_2
Two after.
Definition: reldatefmt.h:212
UDAT_ABSOLUTE_THURSDAY
@ UDAT_ABSOLUTE_THURSDAY
Thursday.
Definition: reldatefmt.h:124