ICU 50.2 50.2
udat.h
Go to the documentation of this file.
1/*
2 *******************************************************************************
3 * Copyright (C) 1996-2012, International Business Machines
4 * Corporation and others. All Rights Reserved.
5 *******************************************************************************
6*/
7
8#ifndef UDAT_H
9#define UDAT_H
10
11#include "unicode/utypes.h"
12
13#if !UCONFIG_NO_FORMATTING
14
16#include "unicode/ucal.h"
17#include "unicode/unum.h"
18#include "unicode/udisplaycontext.h"
135
140typedef void* UDateFormat;
141
145typedef enum UDateFormatStyle {
156
158 UDAT_RELATIVE = (1 << 7),
159
160 UDAT_FULL_RELATIVE = UDAT_FULL | UDAT_RELATIVE,
161
162 UDAT_LONG_RELATIVE = UDAT_LONG | UDAT_RELATIVE,
163
164 UDAT_MEDIUM_RELATIVE = UDAT_MEDIUM | UDAT_RELATIVE,
165
166 UDAT_SHORT_RELATIVE = UDAT_SHORT | UDAT_RELATIVE,
167
168
171
178
182
183// Skeletons for dates.
184
189#define UDAT_YEAR "y"
194#define UDAT_QUARTER "QQQQ"
199#define UDAT_ABBR_QUARTER "QQQ"
204#define UDAT_YEAR_QUARTER "yQQQQ"
209#define UDAT_YEAR_ABBR_QUARTER "yQQQ"
214#define UDAT_MONTH "MMMM"
219#define UDAT_ABBR_MONTH "MMM"
224#define UDAT_NUM_MONTH "M"
229#define UDAT_YEAR_MONTH "yMMMM"
234#define UDAT_YEAR_ABBR_MONTH "yMMM"
239#define UDAT_YEAR_NUM_MONTH "yM"
244#define UDAT_DAY "d"
250#define UDAT_YEAR_MONTH_DAY "yMMMMd"
256#define UDAT_YEAR_ABBR_MONTH_DAY "yMMMd"
262#define UDAT_YEAR_NUM_MONTH_DAY "yMd"
267#define UDAT_WEEKDAY "EEEE"
272#define UDAT_ABBR_WEEKDAY "E"
278#define UDAT_YEAR_MONTH_WEEKDAY_DAY "yMMMMEEEEd"
284#define UDAT_YEAR_ABBR_MONTH_WEEKDAY_DAY "yMMMEd"
290#define UDAT_YEAR_NUM_MONTH_WEEKDAY_DAY "yMEd"
296#define UDAT_MONTH_DAY "MMMMd"
302#define UDAT_ABBR_MONTH_DAY "MMMd"
308#define UDAT_NUM_MONTH_DAY "Md"
314#define UDAT_MONTH_WEEKDAY_DAY "MMMMEEEEd"
320#define UDAT_ABBR_MONTH_WEEKDAY_DAY "MMMEd"
326#define UDAT_NUM_MONTH_WEEKDAY_DAY "MEd"
327
328// Skeletons for times.
329
334#define UDAT_HOUR "j"
339#define UDAT_HOUR24 "H"
344#define UDAT_MINUTE "m"
350#define UDAT_HOUR_MINUTE "jm"
356#define UDAT_HOUR24_MINUTE "Hm"
361#define UDAT_SECOND "s"
368#define UDAT_HOUR_MINUTE_SECOND "jms"
375#define UDAT_HOUR24_MINUTE_SECOND "Hms"
381#define UDAT_MINUTE_SECOND "ms"
382
383// Skeletons for time zones.
384
392#define UDAT_LOCATION_TZ "VVVV"
400#define UDAT_GENERIC_TZ "vvvv"
408#define UDAT_ABBR_GENERIC_TZ "v"
416#define UDAT_SPECIFIC_TZ "zzzz"
424#define UDAT_ABBR_SPECIFIC_TZ "z"
432#define UDAT_ABBR_UTC_TZ "ZZZZ"
433
434// deprecated skeleton constants
435
440#define UDAT_STANDALONE_MONTH "LLLL"
445#define UDAT_ABBR_STANDALONE_MONTH "LLL"
446
451#define UDAT_HOUR_MINUTE_GENERIC_TZ "jmv"
456#define UDAT_HOUR_MINUTE_TZ "jmz"
461#define UDAT_HOUR_GENERIC_TZ "jv"
466#define UDAT_HOUR_TZ "jz"
467
727
728
739
740
769U_STABLE UDateFormat* U_EXPORT2
771 UDateFormatStyle dateStyle,
772 const char *locale,
773 const UChar *tzID,
774 int32_t tzIDLength,
775 const UChar *pattern,
776 int32_t patternLength,
777 UErrorCode *status);
778
779
786U_STABLE void U_EXPORT2
788
789#if U_SHOW_CPLUSPLUS_API
790
792
803
805
806#endif
807
816U_STABLE UDateFormat* U_EXPORT2
818 UErrorCode *status);
819
838U_STABLE int32_t U_EXPORT2
840 UDate dateToFormat,
841 UChar* result,
842 int32_t resultLength,
843 UFieldPosition* position,
844 UErrorCode* status);
845
871U_STABLE UDate U_EXPORT2
873 const UChar* text,
874 int32_t textLength,
875 int32_t *parsePos,
876 UErrorCode *status);
877
899U_STABLE void U_EXPORT2
901 UCalendar* calendar,
902 const UChar* text,
903 int32_t textLength,
904 int32_t *parsePos,
905 UErrorCode *status);
906
916U_STABLE UBool U_EXPORT2
918
928U_STABLE void U_EXPORT2
930 UBool isLenient);
931
941U_STABLE const UCalendar* U_EXPORT2
943
953U_STABLE void U_EXPORT2
955 const UCalendar* calendarToSet);
956
966U_STABLE const UNumberFormat* U_EXPORT2
968
978U_STABLE void U_EXPORT2
980 const UNumberFormat* numberFormatToSet);
981
991U_STABLE const char* U_EXPORT2
992udat_getAvailable(int32_t localeIndex);
993
1002U_STABLE int32_t U_EXPORT2
1004
1015U_STABLE UDate U_EXPORT2
1017 UErrorCode *status);
1018
1029U_STABLE void U_EXPORT2
1031 UDate d,
1032 UErrorCode *status);
1033
1046U_STABLE int32_t U_EXPORT2
1048 UBool localized,
1049 UChar *result,
1050 int32_t resultLength,
1051 UErrorCode *status);
1052
1063U_STABLE void U_EXPORT2
1065 UBool localized,
1066 const UChar *pattern,
1067 int32_t patternLength);
1068
1111
1112struct UDateFormatSymbols;
1118
1135U_STABLE int32_t U_EXPORT2
1138 int32_t symbolIndex,
1139 UChar *result,
1140 int32_t resultLength,
1141 UErrorCode *status);
1142
1155U_STABLE int32_t U_EXPORT2
1158
1174U_STABLE void U_EXPORT2
1177 int32_t symbolIndex,
1178 UChar *value,
1179 int32_t valueLength,
1180 UErrorCode *status);
1181
1191U_STABLE const char* U_EXPORT2
1193 ULocDataLocaleType type,
1194 UErrorCode* status);
1195
1196#ifndef U_HIDE_INTERNAL_API
1205U_INTERNAL void U_EXPORT2
1206udat_setContext(UDateFormat* fmt, UDisplayContext value, UErrorCode* status);
1207
1217U_INTERNAL UDisplayContext U_EXPORT2
1218udat_getContext(UDateFormat* fmt, UDisplayContextType type, UErrorCode* status);
1219
1220#endif /* U_HIDE_INTERNAL_API */
1221
1222#ifndef U_HIDE_INTERNAL_API
1234U_INTERNAL int32_t U_EXPORT2
1236 UChar *result,
1237 int32_t resultLength,
1238 UErrorCode *status);
1239
1251U_INTERNAL int32_t U_EXPORT2
1253 UChar *result,
1254 int32_t resultLength,
1255 UErrorCode *status);
1256
1269U_INTERNAL void U_EXPORT2
1271 const UChar *datePattern,
1272 int32_t datePatternLength,
1273 const UChar *timePattern,
1274 int32_t timePatternLength,
1275 UErrorCode *status);
1276#endif /* U_HIDE_INTERNAL_API */
1277
1282typedef UDateFormat* (U_EXPORT2 *UDateFormatOpener) (UDateFormatStyle timeStyle,
1283 UDateFormatStyle dateStyle,
1284 const char *locale,
1285 const UChar *tzID,
1286 int32_t tzIDLength,
1287 const UChar *pattern,
1288 int32_t patternLength,
1289 UErrorCode *status);
1290
1295U_INTERNAL void U_EXPORT2
1297
1304
1305
1306#endif /* #if !UCONFIG_NO_FORMATTING */
1307
1308#endif
"Smart pointer" class, closes a UDateFormat via udat_close().
C++ API: "Smart pointers" for use with and in ICU4C C++ code.
#define U_DEFINE_LOCAL_OPEN_POINTER(LocalPointerClassName, Type, closeFunction)
"Smart pointer" definition macro, deletes objects via the closeFunction.
A struct representing a range of text containing a specific field.
Definition umisc.h:32
C API: Calendar.
UCalendarDateFields
Possible fields in a UCalendar.
Definition ucal.h:183
void * UCalendar
A calendar.
Definition ucal.h:153
int32_t udat_toPattern(const UDateFormat *fmt, UBool localized, UChar *result, int32_t resultLength, UErrorCode *status)
Extract the pattern from a UDateFormat.
void udat_set2DigitYearStart(UDateFormat *fmt, UDate d, UErrorCode *status)
Set the year relative to which all 2-digit years will be interpreted.
int32_t udat_toPatternRelativeTime(const UDateFormat *fmt, UChar *result, int32_t resultLength, UErrorCode *status)
Extract the time pattern from a UDateFormat set for relative date formatting.
UDate udat_get2DigitYearStart(const UDateFormat *fmt, UErrorCode *status)
Get the year relative to which all 2-digit years are interpreted.
void udat_applyPatternRelative(UDateFormat *format, const UChar *datePattern, int32_t datePatternLength, const UChar *timePattern, int32_t timePatternLength, UErrorCode *status)
Set the date & time patterns used by a UDateFormat set for relative date formatting.
void * UDateFormat
A date formatter.
Definition udat.h:140
void udat_parseCalendar(const UDateFormat *format, UCalendar *calendar, const UChar *text, int32_t textLength, int32_t *parsePos, UErrorCode *status)
Parse a string into an date/time using a UDateFormat.
void udat_setContext(UDateFormat *fmt, UDisplayContext value, UErrorCode *status)
Set a particular UDisplayContext value in the formatter, such as UDISPCTX_CAPITALIZATION_FOR_STANDALO...
void udat_applyPattern(UDateFormat *format, UBool localized, const UChar *pattern, int32_t patternLength)
Set the pattern used by an UDateFormat.
int32_t udat_countAvailable(void)
Determine how many locales have date/time formatting patterns available.
void udat_setLenient(UDateFormat *fmt, UBool isLenient)
Specify whether an UDateFormat will perform lenient parsing.
UDateFormat *(* UDateFormatOpener)(UDateFormatStyle timeStyle, UDateFormatStyle dateStyle, const char *locale, const UChar *tzID, int32_t tzIDLength, const UChar *pattern, int32_t patternLength, UErrorCode *status)
Definition udat.h:1282
UCalendarDateFields udat_toCalendarDateField(UDateFormatField field)
Maps from a UDateFormatField to the corresponding UCalendarDateFields.
UDateFormatSymbolType
The possible types of date format symbols.
Definition udat.h:1073
@ UDAT_ERAS
The era names, for example AD.
Definition udat.h:1075
@ UDAT_SHORT_QUARTERS
The short quarter names, for example Q1.
Definition udat.h:1105
@ UDAT_STANDALONE_QUARTERS
Standalone context versions of quarters.
Definition udat.h:1107
@ UDAT_SHORT_WEEKDAYS
The short weekday names, for example Mon.
Definition udat.h:1083
@ UDAT_NARROW_WEEKDAYS
The narrow weekday names, for example N.
Definition udat.h:1093
@ UDAT_STANDALONE_WEEKDAYS
Standalone context versions of weekdays.
Definition udat.h:1099
@ UDAT_ERA_NAMES
The long era names, for example Anno Domini.
Definition udat.h:1089
@ UDAT_WEEKDAYS
The weekday names, for example Monday.
Definition udat.h:1081
@ UDAT_QUARTERS
The quarters, for example 1st Quarter.
Definition udat.h:1103
@ UDAT_LOCALIZED_CHARS
The localized characters.
Definition udat.h:1087
@ UDAT_MONTHS
The month names, for example February.
Definition udat.h:1077
@ UDAT_NARROW_MONTHS
The narrow month names, for example F.
Definition udat.h:1091
@ UDAT_STANDALONE_MONTHS
Standalone context versions of months.
Definition udat.h:1095
@ UDAT_SHORT_MONTHS
The short month names, for example Feb.
Definition udat.h:1079
@ UDAT_AM_PMS
The AM/PM names, for example AM.
Definition udat.h:1085
UDisplayContext udat_getContext(UDateFormat *fmt, UDisplayContextType type, UErrorCode *status)
Get the formatter's UDisplayContext value for the specified UDisplayContextType, such as UDISPCTX_TYP...
void udat_setNumberFormat(UDateFormat *fmt, const UNumberFormat *numberFormatToSet)
Set the UNumberFormat associated with an UDateFormat.
int32_t udat_format(const UDateFormat *format, UDate dateToFormat, UChar *result, int32_t resultLength, UFieldPosition *position, UErrorCode *status)
Format a date using an UDateFormat.
UDateFormat * udat_clone(const UDateFormat *fmt, UErrorCode *status)
Open a copy of a UDateFormat.
int32_t udat_countSymbols(const UDateFormat *fmt, UDateFormatSymbolType type)
Count the number of particular symbols for an UDateFormat.
const UCalendar * udat_getCalendar(const UDateFormat *fmt)
Get the UCalendar associated with an UDateFormat.
UDateFormatOpener udat_unregisterOpener(UDateFormatOpener opener, UErrorCode *status)
Un-Register a provider factory.
void udat_close(UDateFormat *format)
Close a UDateFormat.
struct UDateFormatSymbols UDateFormatSymbols
Date format symbols.
Definition udat.h:1117
void udat_setCalendar(UDateFormat *fmt, const UCalendar *calendarToSet)
Set the UCalendar associated with an UDateFormat.
const UNumberFormat * udat_getNumberFormat(const UDateFormat *fmt)
Get the UNumberFormat associated with an UDateFormat.
UDate udat_parse(const UDateFormat *format, const UChar *text, int32_t textLength, int32_t *parsePos, UErrorCode *status)
Parse a string into an date/time using a UDateFormat.
const char * udat_getLocaleByType(const UDateFormat *fmt, ULocDataLocaleType type, UErrorCode *status)
Get the locale for this date format object.
int32_t udat_toPatternRelativeDate(const UDateFormat *fmt, UChar *result, int32_t resultLength, UErrorCode *status)
Extract the date pattern from a UDateFormat set for relative date formatting.
void udat_registerOpener(UDateFormatOpener opener, UErrorCode *status)
Register a provider factory.
UDateFormat * udat_open(UDateFormatStyle timeStyle, UDateFormatStyle dateStyle, const char *locale, const UChar *tzID, int32_t tzIDLength, const UChar *pattern, int32_t patternLength, UErrorCode *status)
Open a new UDateFormat for formatting and parsing dates and times.
UDateFormatField
FieldPosition and UFieldPosition selectors for format fields defined by DateFormat and UDateFormat.
Definition udat.h:473
@ UDAT_AM_PM_FIELD
FieldPosition and UFieldPosition selector for 'a' field alignment, corresponding to the UCAL_AM_PM fi...
Definition udat.h:589
@ UDAT_TIMEZONE_FIELD
FieldPosition and UFieldPosition selector for 'z' field alignment, corresponding to the UCAL_ZONE_OFF...
Definition udat.h:615
@ UDAT_DOW_LOCAL_FIELD
FieldPosition and UFieldPosition selector for 'e' field alignment, corresponding to the UCAL_DOW_LOCA...
Definition udat.h:629
@ UDAT_DATE_FIELD
FieldPosition and UFieldPosition selector for 'd' field alignment, corresponding to the UCAL_DATE fie...
Definition udat.h:500
@ UDAT_MONTH_FIELD
FieldPosition and UFieldPosition selector for 'M' field alignment, corresponding to the UCAL_MONTH fi...
Definition udat.h:493
@ UDAT_JULIAN_DAY_FIELD
FieldPosition and UFieldPosition selector for 'g' field alignment, corresponding to the UCAL_JULIAN_D...
Definition udat.h:643
@ UDAT_FIELD_COUNT
Number of FieldPosition and UFieldPosition selectors for DateFormat and UDateFormat.
Definition udat.h:724
@ UDAT_EXTENDED_YEAR_FIELD
FieldPosition and UFieldPosition selector for 'u' field alignment, corresponding to the UCAL_EXTENDED...
Definition udat.h:636
@ UDAT_DAY_OF_WEEK_FIELD
FieldPosition and UFieldPosition selector for 'E' field alignment, corresponding to the UCAL_DAY_OF_W...
Definition udat.h:554
@ UDAT_MILLISECONDS_IN_DAY_FIELD
FieldPosition and UFieldPosition selector for 'A' field alignment, corresponding to the UCAL_MILLISEC...
Definition udat.h:650
@ UDAT_TIMEZONE_SPECIAL_FIELD
FieldPosition and UFieldPosition selector for 'V' field alignment, corresponding to the UCAL_ZONE_OFF...
Definition udat.h:705
@ UDAT_YEAR_FIELD
FieldPosition and UFieldPosition selector for 'y' field alignment, corresponding to the UCAL_YEAR fie...
Definition udat.h:486
@ UDAT_ERA_FIELD
FieldPosition and UFieldPosition selector for 'G' field alignment, corresponding to the UCAL_ERA fiel...
Definition udat.h:479
@ UDAT_STANDALONE_QUARTER_FIELD
FieldPosition selector for the "q" field alignment, corresponding to stand-alone quarters.
Definition udat.h:698
@ UDAT_QUARTER_FIELD
FieldPosition selector for "Q" field alignment, corresponding to quarters.
Definition udat.h:689
@ UDAT_TIMEZONE_RFC_FIELD
FieldPosition and UFieldPosition selector for 'Z' field alignment, corresponding to the UCAL_ZONE_OFF...
Definition udat.h:658
@ UDAT_DAY_OF_YEAR_FIELD
FieldPosition and UFieldPosition selector for 'D' field alignment, corresponding to the UCAL_DAY_OF_Y...
Definition udat.h:561
@ UDAT_WEEK_OF_MONTH_FIELD
FieldPosition and UFieldPosition selector for 'W' field alignment, corresponding to the UCAL_WEEK_OF_...
Definition udat.h:582
@ UDAT_FRACTIONAL_SECOND_FIELD
FieldPosition and UFieldPosition selector for 'S' field alignment, corresponding to the UCAL_MILLISEC...
Definition udat.h:547
@ UDAT_STANDALONE_DAY_FIELD
FieldPosition selector for 'c' field alignment, corresponding to the UCAL_DOW_LOCAL field.
Definition udat.h:672
@ UDAT_DAY_OF_WEEK_IN_MONTH_FIELD
FieldPosition and UFieldPosition selector for 'F' field alignment, corresponding to the UCAL_DAY_OF_W...
Definition udat.h:568
@ UDAT_SECOND_FIELD
FieldPosition and UFieldPosition selector for 's' field alignment, corresponding to the UCAL_SECOND f...
Definition udat.h:532
@ UDAT_HOUR1_FIELD
FieldPosition and UFieldPosition selector for 'h' field alignment, corresponding to the UCAL_HOUR fie...
Definition udat.h:598
@ UDAT_YEAR_NAME_FIELD
FieldPosition selector for "U" field alignment, corresponding to cyclic year names.
Definition udat.h:714
@ UDAT_MINUTE_FIELD
FieldPosition and UFieldPosition selector for 'm' field alignment, corresponding to the UCAL_MINUTE f...
Definition udat.h:525
@ UDAT_TIMEZONE_GENERIC_FIELD
FieldPosition and UFieldPosition selector for 'v' field alignment, corresponding to the UCAL_ZONE_OFF...
Definition udat.h:665
@ UDAT_HOUR0_FIELD
FieldPosition and UFieldPosition selector for 'K' field alignment, corresponding to the UCAL_HOUR fie...
Definition udat.h:607
@ UDAT_YEAR_WOY_FIELD
FieldPosition and UFieldPosition selector for 'Y' field alignment, corresponding to the UCAL_YEAR_WOY...
Definition udat.h:622
@ UDAT_WEEK_OF_YEAR_FIELD
FieldPosition and UFieldPosition selector for 'w' field alignment, corresponding to the UCAL_WEEK_OF_...
Definition udat.h:575
@ UDAT_HOUR_OF_DAY0_FIELD
FieldPosition and UFieldPosition selector for 'H' field alignment, corresponding to the UCAL_HOUR_OF_...
Definition udat.h:518
@ UDAT_STANDALONE_MONTH_FIELD
FieldPosition selector for 'L' field alignment, corresponding to the UCAL_MONTH field.
Definition udat.h:680
@ UDAT_HOUR_OF_DAY1_FIELD
FieldPosition and UFieldPosition selector for 'k' field alignment, corresponding to the UCAL_HOUR_OF_...
Definition udat.h:509
UDateFormatStyle
The possible date/time format styles.
Definition udat.h:145
@ UDAT_PATTERN
Use the pattern given in the parameter to udat_open.
Definition udat.h:177
@ UDAT_RELATIVE
Bitfield for relative date.
Definition udat.h:158
@ UDAT_DEFAULT
Default style.
Definition udat.h:155
@ UDAT_IGNORE
Definition udat.h:180
@ UDAT_SHORT
Short style.
Definition udat.h:153
@ UDAT_FULL
Full style.
Definition udat.h:147
@ UDAT_LONG
Long style.
Definition udat.h:149
@ UDAT_MEDIUM
Medium style.
Definition udat.h:151
@ UDAT_NONE
No style.
Definition udat.h:170
const char * udat_getAvailable(int32_t localeIndex)
Get a locale for which date/time formatting patterns are available.
int32_t udat_getSymbols(const UDateFormat *fmt, UDateFormatSymbolType type, int32_t symbolIndex, UChar *result, int32_t resultLength, UErrorCode *status)
Get the symbols associated with an UDateFormat.
UBool udat_isLenient(const UDateFormat *fmt)
Determine if an UDateFormat will perform lenient parsing.
void udat_setSymbols(UDateFormat *format, UDateFormatSymbolType type, int32_t symbolIndex, UChar *value, int32_t valueLength, UErrorCode *status)
Set the symbols associated with an UDateFormat.
ULocDataLocaleType
Constants for *_getLocale() Allow user to select whether she wants information on requested,...
Definition uloc.h:336
#define U_INTERNAL
This is used to declare a function as an internal ICU C API.
Definition umachine.h:117
int8_t UBool
The ICU boolean type.
Definition umachine.h:200
uint16_t UChar
Define UChar to be UCHAR_TYPE, if that is #defined (for example, to char16_t), or wchar_t if that is ...
Definition umachine.h:278
#define U_STABLE
This is used to declare a function as a stable public ICU C API.
Definition umachine.h:109
C API: NumberFormat.
void * UNumberFormat
A number formatter.
Definition unum.h:130
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
double UDate
Date and Time data type.
Definition utypes.h:201
#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