ICU 57.1  57.1
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 
360  const RelativeDateTimeFormatter& other);
361 
367 
384  double quantity,
385  UDateDirection direction,
386  UDateRelativeUnit unit,
387  UnicodeString& appendTo,
388  UErrorCode& status) const;
389 
403  UDateDirection direction,
404  UDateAbsoluteUnit unit,
405  UnicodeString& appendTo,
406  UErrorCode& status) const;
407 
408 #ifndef U_HIDE_DRAFT_API
427  double offset,
429  UnicodeString& appendTo,
430  UErrorCode& status) const;
431 
450  double offset,
452  UnicodeString& appendTo,
453  UErrorCode& status) const;
454 #endif /* U_HIDE_DRAFT_API */
455 
469  const UnicodeString& relativeDateString,
470  const UnicodeString& timeString,
471  UnicodeString& appendTo,
472  UErrorCode& status) const;
473 
480 
487 
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
The BreakIterator class implements methods for finding the location of boundaries in text.
Definition: brkiter.h:100
A Locale object represents a specific geographical, political, or cultural region.
Definition: locid.h:185
Abstract base class for all number formats.
Definition: numfmt.h:167
Formats simple relative dates.
Definition: reldatefmt.h:299
RelativeDateTimeFormatter(const RelativeDateTimeFormatter &other)
Copy constructor.
const NumberFormat & getNumberFormat() const
Returns the NumberFormat this object is using.
UDisplayContext getCapitalizationContext() const
Returns the capitalization context.
UnicodeString & format(double offset, URelativeDateTimeUnit unit, UnicodeString &appendTo, UErrorCode &status) const
Format a combination of URelativeDateTimeUnit and numeric offset using a text style if possible,...
UnicodeString & formatNumeric(double offset, URelativeDateTimeUnit unit, UnicodeString &appendTo, UErrorCode &status) const
Format a combination of URelativeDateTimeUnit and numeric offset using a numeric style,...
UDateRelativeDateTimeFormatterStyle getFormatStyle() const
Returns the format style.
RelativeDateTimeFormatter(const Locale &locale, UErrorCode &status)
Create RelativeDateTimeFormatter with given locale.
UnicodeString & format(double quantity, UDateDirection direction, UDateRelativeUnit unit, UnicodeString &appendTo, UErrorCode &status) const
Formats a relative date with a quantity such as "in 5 days" or "3 months ago".
RelativeDateTimeFormatter & operator=(const RelativeDateTimeFormatter &other)
Assignment operator.
RelativeDateTimeFormatter(const Locale &locale, NumberFormat *nfToAdopt, UDateRelativeDateTimeFormatterStyle style, UDisplayContext capitalizationContext, UErrorCode &status)
Create RelativeDateTimeFormatter with given locale, NumberFormat, and capitalization context.
RelativeDateTimeFormatter(const Locale &locale, NumberFormat *nfToAdopt, UErrorCode &status)
Create RelativeDateTimeFormatter with given locale and NumberFormat.
virtual ~RelativeDateTimeFormatter()
Destructor.
UnicodeString & format(UDateDirection direction, UDateAbsoluteUnit unit, UnicodeString &appendTo, UErrorCode &status) const
Formats a relative date without a quantity.
UnicodeString & combineDateAndTime(const UnicodeString &relativeDateString, const UnicodeString &timeString, UnicodeString &appendTo, UErrorCode &status) const
Combines a relative date string and a time string in this object's locale.
RelativeDateTimeFormatter(UErrorCode &status)
Create RelativeDateTimeFormatter with default locale.
UObject is the common ICU "boilerplate" class.
Definition: uobject.h:221
UnicodeString is a string class that stores Unicode characters directly and provides similar function...
Definition: unistr.h:294
C++ API: Locale ID object.
UDateAbsoluteUnit
Represents an absolute unit.
Definition: reldatefmt.h:88
@ UDAT_ABSOLUTE_DAY
Day.
Definition: reldatefmt.h:138
@ UDAT_ABSOLUTE_FRIDAY
Friday.
Definition: reldatefmt.h:126
@ UDAT_ABSOLUTE_YEAR
Year.
Definition: reldatefmt.h:156
@ UDAT_ABSOLUTE_WEDNESDAY
Wednesday.
Definition: reldatefmt.h:114
@ UDAT_ABSOLUTE_WEEK
Week.
Definition: reldatefmt.h:144
@ UDAT_ABSOLUTE_NOW
Now.
Definition: reldatefmt.h:162
@ UDAT_ABSOLUTE_THURSDAY
Thursday.
Definition: reldatefmt.h:120
@ UDAT_ABSOLUTE_TUESDAY
Tuesday.
Definition: reldatefmt.h:108
@ UDAT_ABSOLUTE_MONTH
Month.
Definition: reldatefmt.h:150
@ UDAT_ABSOLUTE_SUNDAY
Sunday.
Definition: reldatefmt.h:96
@ UDAT_ABSOLUTE_UNIT_COUNT
Count of items in this enum.
Definition: reldatefmt.h:168
@ UDAT_ABSOLUTE_MONDAY
Monday.
Definition: reldatefmt.h:102
@ UDAT_ABSOLUTE_SATURDAY
Saturday.
Definition: reldatefmt.h:132
UDateRelativeUnit
Represents the unit for formatting a relative date.
Definition: reldatefmt.h:33
@ UDAT_RELATIVE_DAYS
Days.
Definition: reldatefmt.h:57
@ UDAT_RELATIVE_UNIT_COUNT
Count of items in this enum.
Definition: reldatefmt.h:81
@ UDAT_RELATIVE_HOURS
Hours.
Definition: reldatefmt.h:51
@ UDAT_RELATIVE_MONTHS
Months.
Definition: reldatefmt.h:69
@ UDAT_RELATIVE_WEEKS
Weeks.
Definition: reldatefmt.h:63
@ UDAT_RELATIVE_YEARS
Years.
Definition: reldatefmt.h:75
@ UDAT_RELATIVE_MINUTES
Minutes.
Definition: reldatefmt.h:45
@ UDAT_RELATIVE_SECONDS
Seconds.
Definition: reldatefmt.h:39
UDateDirection
Represents a direction for an absolute unit e.g "Next Tuesday" or "Last Tuesday".
Definition: reldatefmt.h:176
@ UDAT_DIRECTION_PLAIN
Plain, which means the absence of a qualifier.
Definition: reldatefmt.h:212
@ UDAT_DIRECTION_THIS
This.
Definition: reldatefmt.h:194
@ UDAT_DIRECTION_LAST_2
Two before.
Definition: reldatefmt.h:182
@ UDAT_DIRECTION_LAST
Last.
Definition: reldatefmt.h:188
@ UDAT_DIRECTION_NEXT
Next.
Definition: reldatefmt.h:200
@ UDAT_DIRECTION_NEXT_2
Two after.
Definition: reldatefmt.h:206
@ UDAT_DIRECTION_COUNT
Count of items in this enum.
Definition: reldatefmt.h:218
C API: Display context types (enum values)
UDisplayContext
Display context settings.
C++ API: Common ICU base class UObject.
C API: URelativeDateTimeFormatter, relative date formatting of unit + numeric offset.
UDateRelativeDateTimeFormatterStyle
The formatting style.
Definition: ureldatefmt.h:42
URelativeDateTimeUnit
Represents the unit for formatting a relative date.
Definition: ureldatefmt.h:74
Basic definitions for ICU, for both C and C++ APIs.
UErrorCode
Error code to replace exception handling, so that the code is compatible with all C++ compilers,...
Definition: utypes.h:476
#define U_I18N_API
Set to export library symbols from inside the i18n library, and to import them from outside.
Definition: utypes.h:358
#define U_NAMESPACE_END
This is used to end a declaration of a public ICU C++ API.
Definition: uversion.h:130
#define U_NAMESPACE_BEGIN
This is used to begin a declaration of a public ICU C++ API.
Definition: uversion.h:129