ICU 70.1 70.1

ureldatefmt.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) 2016, International Business Machines
6* Corporation and others. All Rights Reserved.
7*****************************************************************************************
8*/
9
10#ifndef URELDATEFMT_H
11#define URELDATEFMT_H
12
13#include "unicode/utypes.h"
14
15#if !UCONFIG_NO_FORMATTING && !UCONFIG_NO_BREAK_ITERATION
16
17#include "unicode/unum.h"
18#include "unicode/udisplaycontext.h"
19#include "unicode/uformattedvalue.h"
20
21#if U_SHOW_CPLUSPLUS_API
22#include "unicode/localpointer.h"
23#endif // U_SHOW_CPLUSPLUS_API
24
48 typedef enum UDateRelativeDateTimeFormatterStyle {
53 UDAT_STYLE_LONG,
54
59 UDAT_STYLE_SHORT,
60
65 UDAT_STYLE_NARROW,
66
67#ifndef U_HIDE_DEPRECATED_API
72 UDAT_STYLE_COUNT
73#endif /* U_HIDE_DEPRECATED_API */
74} UDateRelativeDateTimeFormatterStyle;
75
81 typedef enum URelativeDateTimeUnit {
87 UDAT_REL_UNIT_YEAR,
93 UDAT_REL_UNIT_QUARTER,
99 UDAT_REL_UNIT_MONTH,
105 UDAT_REL_UNIT_WEEK,
111 UDAT_REL_UNIT_DAY,
117 UDAT_REL_UNIT_HOUR,
123 UDAT_REL_UNIT_MINUTE,
129 UDAT_REL_UNIT_SECOND,
135 UDAT_REL_UNIT_SUNDAY,
141 UDAT_REL_UNIT_MONDAY,
147 UDAT_REL_UNIT_TUESDAY,
153 UDAT_REL_UNIT_WEDNESDAY,
159 UDAT_REL_UNIT_THURSDAY,
165 UDAT_REL_UNIT_FRIDAY,
171 UDAT_REL_UNIT_SATURDAY,
172#ifndef U_HIDE_DEPRECATED_API
177 UDAT_REL_UNIT_COUNT
178#endif /* U_HIDE_DEPRECATED_API */
179} URelativeDateTimeUnit;
180
186 typedef enum URelativeDateTimeFormatterField {
191 UDAT_REL_LITERAL_FIELD,
196 UDAT_REL_NUMERIC_FIELD,
197} URelativeDateTimeFormatterField;
198
199
204 struct URelativeDateTimeFormatter;
205 typedef struct URelativeDateTimeFormatter URelativeDateTimeFormatter;
240 U_CAPI URelativeDateTimeFormatter* U_EXPORT2
241 ureldatefmt_open( const char* locale,
242 UNumberFormat* nfToAdopt,
243 UDateRelativeDateTimeFormatterStyle width,
244 UDisplayContext capitalizationContext,
245 UErrorCode* status );
246
253 U_CAPI void U_EXPORT2
254 ureldatefmt_close(URelativeDateTimeFormatter *reldatefmt);
255
256 struct UFormattedRelativeDateTime;
261 typedef struct UFormattedRelativeDateTime UFormattedRelativeDateTime;
262
272 U_CAPI UFormattedRelativeDateTime* U_EXPORT2
273 ureldatefmt_openResult(UErrorCode* ec);
274
289 U_CAPI const UFormattedValue* U_EXPORT2
290 ureldatefmt_resultAsValue(const UFormattedRelativeDateTime* ufrdt, UErrorCode* ec);
291
298 U_CAPI void U_EXPORT2
299 ureldatefmt_closeResult(UFormattedRelativeDateTime* ufrdt);
300
301
302#if U_SHOW_CPLUSPLUS_API
303
304U_NAMESPACE_BEGIN
305
315 U_DEFINE_LOCAL_OPEN_POINTER(LocalURelativeDateTimeFormatterPointer, URelativeDateTimeFormatter, ureldatefmt_close);
316
326 U_DEFINE_LOCAL_OPEN_POINTER(LocalUFormattedRelativeDateTimePointer, UFormattedRelativeDateTime, ureldatefmt_closeResult);
327
328U_NAMESPACE_END
329
330#endif
331
360 U_CAPI int32_t U_EXPORT2
361 ureldatefmt_formatNumeric( const URelativeDateTimeFormatter* reldatefmt,
362 double offset,
363 URelativeDateTimeUnit unit,
364 UChar* result,
365 int32_t resultCapacity,
366 UErrorCode* status);
367
391 U_CAPI void U_EXPORT2
392 ureldatefmt_formatNumericToResult(
393 const URelativeDateTimeFormatter* reldatefmt,
394 double offset,
395 URelativeDateTimeUnit unit,
396 UFormattedRelativeDateTime* result,
397 UErrorCode* status);
398
427 U_CAPI int32_t U_EXPORT2
428 ureldatefmt_format( const URelativeDateTimeFormatter* reldatefmt,
429 double offset,
430 URelativeDateTimeUnit unit,
431 UChar* result,
432 int32_t resultCapacity,
433 UErrorCode* status);
434
461 U_CAPI void U_EXPORT2
462 ureldatefmt_formatToResult(
463 const URelativeDateTimeFormatter* reldatefmt,
464 double offset,
465 URelativeDateTimeUnit unit,
466 UFormattedRelativeDateTime* result,
467 UErrorCode* status);
468
498 U_CAPI int32_t U_EXPORT2
499 ureldatefmt_combineDateAndTime( const URelativeDateTimeFormatter* reldatefmt,
500 const UChar * relativeDateString,
501 int32_t relativeDateStringLen,
502 const UChar * timeString,
503 int32_t timeStringLen,
504 UChar* result,
505 int32_t resultCapacity,
506 UErrorCode* status );
507
508#endif /* !UCONFIG_NO_FORMATTING && !UCONFIG_NO_BREAK_ITERATION */
509
510#endif
LocalUFormattedRelativeDateTimePointer
"Smart pointer" class, closes a UFormattedRelativeDateTime via ureldatefmt_closeResult().
Definition: ureldatefmt.h:315
LocalURelativeDateTimeFormatterPointer
"Smart pointer" class, closes a URelativeDateTimeFormatter via ureldatefmt_close().
localpointer.h
C++ API: "Smart pointers" for use with and in ICU4C C++ code.
U_DEFINE_LOCAL_OPEN_POINTER
#define U_DEFINE_LOCAL_OPEN_POINTER(LocalPointerClassName, Type, closeFunction)
"Smart pointer" definition macro, deletes objects via the closeFunction.
Definition: localpointer.h:550
udisplaycontext.h
C API: Display context types (enum values)
UDisplayContext
UDisplayContext
Display context settings.
Definition: udisplaycontext.h:64
uformattedvalue.h
C API: Abstract operations for localized strings.
UFormattedValue
struct UFormattedValue UFormattedValue
An abstract formatted value: a string with associated field attributes.
Definition: uformattedvalue.h:370
U_CAPI
#define U_CAPI
This is used to declare a function as a public ICU C API.
Definition: umachine.h:110
UChar
char16_t UChar
The base type for UTF-16 code units and pointers.
Definition: umachine.h:418
unum.h
C API: Compatibility APIs for number formatting.
UNumberFormat
void * UNumberFormat
A number formatter.
Definition: unum.h:144
ureldatefmt_formatNumeric
U_CAPI int32_t ureldatefmt_formatNumeric(const URelativeDateTimeFormatter *reldatefmt, double offset, URelativeDateTimeUnit unit, UChar *result, int32_t resultCapacity, UErrorCode *status)
Format a combination of URelativeDateTimeUnit and numeric offset using a numeric style,...
ureldatefmt_close
U_CAPI void ureldatefmt_close(URelativeDateTimeFormatter *reldatefmt)
Close a URelativeDateTimeFormatter object.
ureldatefmt_format
U_CAPI int32_t ureldatefmt_format(const URelativeDateTimeFormatter *reldatefmt, double offset, URelativeDateTimeUnit unit, UChar *result, int32_t resultCapacity, UErrorCode *status)
Format a combination of URelativeDateTimeUnit and numeric offset using a text style if possible,...
ureldatefmt_formatToResult
U_CAPI void ureldatefmt_formatToResult(const URelativeDateTimeFormatter *reldatefmt, double offset, URelativeDateTimeUnit unit, UFormattedRelativeDateTime *result, UErrorCode *status)
Format a combination of URelativeDateTimeUnit and numeric offset using a text style if possible,...
ureldatefmt_formatNumericToResult
U_CAPI void ureldatefmt_formatNumericToResult(const URelativeDateTimeFormatter *reldatefmt, double offset, URelativeDateTimeUnit unit, UFormattedRelativeDateTime *result, UErrorCode *status)
Format a combination of URelativeDateTimeUnit and numeric offset using a numeric style,...
UDateRelativeDateTimeFormatterStyle
UDateRelativeDateTimeFormatterStyle
The formatting style.
Definition: ureldatefmt.h:48
UDAT_STYLE_COUNT
@ UDAT_STYLE_COUNT
One more than the highest normal UDateRelativeDateTimeFormatterStyle value.
Definition: ureldatefmt.h:72
UDAT_STYLE_LONG
@ UDAT_STYLE_LONG
Everything spelled out.
Definition: ureldatefmt.h:53
UDAT_STYLE_NARROW
@ UDAT_STYLE_NARROW
Use the shortest possible form.
Definition: ureldatefmt.h:65
UDAT_STYLE_SHORT
@ UDAT_STYLE_SHORT
Abbreviations used when possible.
Definition: ureldatefmt.h:59
ureldatefmt_open
U_CAPI URelativeDateTimeFormatter * ureldatefmt_open(const char *locale, UNumberFormat *nfToAdopt, UDateRelativeDateTimeFormatterStyle width, UDisplayContext capitalizationContext, UErrorCode *status)
Open a new URelativeDateTimeFormatter object for a given locale using the specified width and capital...
ureldatefmt_combineDateAndTime
U_CAPI int32_t ureldatefmt_combineDateAndTime(const URelativeDateTimeFormatter *reldatefmt, const UChar *relativeDateString, int32_t relativeDateStringLen, const UChar *timeString, int32_t timeStringLen, UChar *result, int32_t resultCapacity, UErrorCode *status)
Combines a relative date string and a time string in this object's locale.
URelativeDateTimeUnit
URelativeDateTimeUnit
Represents the unit for formatting a relative date.
Definition: ureldatefmt.h:81
UDAT_REL_UNIT_SATURDAY
@ UDAT_REL_UNIT_SATURDAY
Specifies that relative unit is Saturday, e.g.
Definition: ureldatefmt.h:171
UDAT_REL_UNIT_WEEK
@ UDAT_REL_UNIT_WEEK
Specifies that relative unit is week, e.g.
Definition: ureldatefmt.h:105
UDAT_REL_UNIT_SECOND
@ UDAT_REL_UNIT_SECOND
Specifies that relative unit is second, e.g.
Definition: ureldatefmt.h:129
UDAT_REL_UNIT_FRIDAY
@ UDAT_REL_UNIT_FRIDAY
Specifies that relative unit is Friday, e.g.
Definition: ureldatefmt.h:165
UDAT_REL_UNIT_DAY
@ UDAT_REL_UNIT_DAY
Specifies that relative unit is day, e.g.
Definition: ureldatefmt.h:111
UDAT_REL_UNIT_COUNT
@ UDAT_REL_UNIT_COUNT
One more than the highest normal URelativeDateTimeUnit value.
Definition: ureldatefmt.h:177
UDAT_REL_UNIT_MONTH
@ UDAT_REL_UNIT_MONTH
Specifies that relative unit is month, e.g.
Definition: ureldatefmt.h:99
UDAT_REL_UNIT_SUNDAY
@ UDAT_REL_UNIT_SUNDAY
Specifies that relative unit is Sunday, e.g.
Definition: ureldatefmt.h:135
UDAT_REL_UNIT_WEDNESDAY
@ UDAT_REL_UNIT_WEDNESDAY
Specifies that relative unit is Wednesday, e.g.
Definition: ureldatefmt.h:153
UDAT_REL_UNIT_QUARTER
@ UDAT_REL_UNIT_QUARTER
Specifies that relative unit is quarter, e.g.
Definition: ureldatefmt.h:93
UDAT_REL_UNIT_HOUR
@ UDAT_REL_UNIT_HOUR
Specifies that relative unit is hour, e.g.
Definition: ureldatefmt.h:117
UDAT_REL_UNIT_MINUTE
@ UDAT_REL_UNIT_MINUTE
Specifies that relative unit is minute, e.g.
Definition: ureldatefmt.h:123
UDAT_REL_UNIT_TUESDAY
@ UDAT_REL_UNIT_TUESDAY
Specifies that relative unit is Tuesday, e.g.
Definition: ureldatefmt.h:147
UDAT_REL_UNIT_THURSDAY
@ UDAT_REL_UNIT_THURSDAY
Specifies that relative unit is Thursday, e.g.
Definition: ureldatefmt.h:159
UDAT_REL_UNIT_MONDAY
@ UDAT_REL_UNIT_MONDAY
Specifies that relative unit is Monday, e.g.
Definition: ureldatefmt.h:141
UDAT_REL_UNIT_YEAR
@ UDAT_REL_UNIT_YEAR
Specifies that relative unit is year, e.g.
Definition: ureldatefmt.h:87
URelativeDateTimeFormatter
struct URelativeDateTimeFormatter URelativeDateTimeFormatter
C typedef for struct URelativeDateTimeFormatter.
Definition: ureldatefmt.h:205
ureldatefmt_resultAsValue
U_CAPI const UFormattedValue * ureldatefmt_resultAsValue(const UFormattedRelativeDateTime *ufrdt, UErrorCode *ec)
Returns a representation of a UFormattedRelativeDateTime as a UFormattedValue, which can be subsequen...
ureldatefmt_closeResult
U_CAPI void ureldatefmt_closeResult(UFormattedRelativeDateTime *ufrdt)
Releases the UFormattedRelativeDateTime created by ureldatefmt_openResult.
UFormattedRelativeDateTime
struct UFormattedRelativeDateTime UFormattedRelativeDateTime
Opaque struct to contain the results of a URelativeDateTimeFormatter operation.
Definition: ureldatefmt.h:261
URelativeDateTimeFormatterField
URelativeDateTimeFormatterField
FieldPosition and UFieldPosition selectors for format fields defined by RelativeDateTimeFormatter.
Definition: ureldatefmt.h:186
UDAT_REL_LITERAL_FIELD
@ UDAT_REL_LITERAL_FIELD
Represents a literal text string, like "tomorrow" or "days ago".
Definition: ureldatefmt.h:191
UDAT_REL_NUMERIC_FIELD
@ UDAT_REL_NUMERIC_FIELD
Represents a number quantity, like "3" in "3 days ago".
Definition: ureldatefmt.h:196
ureldatefmt_openResult
U_CAPI UFormattedRelativeDateTime * ureldatefmt_openResult(UErrorCode *ec)
Creates an object to hold the result of a URelativeDateTimeFormatter operation.
utypes.h
Basic definitions for ICU, for both C and C++ APIs.
UErrorCode
UErrorCode
Standard ICU4C error code type, a substitute for exceptions.
Definition: utypes.h:415