1*0e209d39SAndroid Build Coastguard Worker // © 2016 and later: Unicode, Inc. and others. 2*0e209d39SAndroid Build Coastguard Worker // License & terms of use: http://www.unicode.org/copyright.html 3*0e209d39SAndroid Build Coastguard Worker /* 4*0e209d39SAndroid Build Coastguard Worker ***************************************************************************************** 5*0e209d39SAndroid Build Coastguard Worker * Copyright (C) 2010-2012,2015 International Business Machines 6*0e209d39SAndroid Build Coastguard Worker * Corporation and others. All Rights Reserved. 7*0e209d39SAndroid Build Coastguard Worker ***************************************************************************************** 8*0e209d39SAndroid Build Coastguard Worker */ 9*0e209d39SAndroid Build Coastguard Worker 10*0e209d39SAndroid Build Coastguard Worker #ifndef UDATEINTERVALFORMAT_H 11*0e209d39SAndroid Build Coastguard Worker #define UDATEINTERVALFORMAT_H 12*0e209d39SAndroid Build Coastguard Worker 13*0e209d39SAndroid Build Coastguard Worker #include "unicode/utypes.h" 14*0e209d39SAndroid Build Coastguard Worker 15*0e209d39SAndroid Build Coastguard Worker #if !UCONFIG_NO_FORMATTING 16*0e209d39SAndroid Build Coastguard Worker 17*0e209d39SAndroid Build Coastguard Worker #include "unicode/ucal.h" 18*0e209d39SAndroid Build Coastguard Worker #include "unicode/umisc.h" 19*0e209d39SAndroid Build Coastguard Worker #include "unicode/uformattedvalue.h" 20*0e209d39SAndroid Build Coastguard Worker #include "unicode/udisplaycontext.h" 21*0e209d39SAndroid Build Coastguard Worker 22*0e209d39SAndroid Build Coastguard Worker #if U_SHOW_CPLUSPLUS_API 23*0e209d39SAndroid Build Coastguard Worker #include "unicode/localpointer.h" 24*0e209d39SAndroid Build Coastguard Worker #endif // U_SHOW_CPLUSPLUS_API 25*0e209d39SAndroid Build Coastguard Worker 26*0e209d39SAndroid Build Coastguard Worker /** 27*0e209d39SAndroid Build Coastguard Worker * \file 28*0e209d39SAndroid Build Coastguard Worker * \brief C API: Format a date interval. 29*0e209d39SAndroid Build Coastguard Worker * 30*0e209d39SAndroid Build Coastguard Worker * A UDateIntervalFormat is used to format the range between two UDate values 31*0e209d39SAndroid Build Coastguard Worker * in a locale-sensitive way, using a skeleton that specifies the precision and 32*0e209d39SAndroid Build Coastguard Worker * completeness of the information to show. If the range smaller than the resolution 33*0e209d39SAndroid Build Coastguard Worker * specified by the skeleton, a single date format will be produced. If the range 34*0e209d39SAndroid Build Coastguard Worker * is larger than the format specified by the skeleton, a locale-specific fallback 35*0e209d39SAndroid Build Coastguard Worker * will be used to format the items missing from the skeleton. 36*0e209d39SAndroid Build Coastguard Worker * 37*0e209d39SAndroid Build Coastguard Worker * For example, if the range is 2010-03-04 07:56 - 2010-03-04 19:56 (12 hours) 38*0e209d39SAndroid Build Coastguard Worker * - The skeleton jm will produce 39*0e209d39SAndroid Build Coastguard Worker * for en_US, "7:56 AM - 7:56 PM" 40*0e209d39SAndroid Build Coastguard Worker * for en_GB, "7:56 - 19:56" 41*0e209d39SAndroid Build Coastguard Worker * - The skeleton MMMd will produce 42*0e209d39SAndroid Build Coastguard Worker * for en_US, "Mar 4" 43*0e209d39SAndroid Build Coastguard Worker * for en_GB, "4 Mar" 44*0e209d39SAndroid Build Coastguard Worker * If the range is 2010-03-04 07:56 - 2010-03-08 16:11 (4 days, 8 hours, 15 minutes) 45*0e209d39SAndroid Build Coastguard Worker * - The skeleton jm will produce 46*0e209d39SAndroid Build Coastguard Worker * for en_US, "3/4/2010 7:56 AM - 3/8/2010 4:11 PM" 47*0e209d39SAndroid Build Coastguard Worker * for en_GB, "4/3/2010 7:56 - 8/3/2010 16:11" 48*0e209d39SAndroid Build Coastguard Worker * - The skeleton MMMd will produce 49*0e209d39SAndroid Build Coastguard Worker * for en_US, "Mar 4-8" 50*0e209d39SAndroid Build Coastguard Worker * for en_GB, "4-8 Mar" 51*0e209d39SAndroid Build Coastguard Worker * 52*0e209d39SAndroid Build Coastguard Worker * Note: the "-" characters in the above sample output will actually be 53*0e209d39SAndroid Build Coastguard Worker * Unicode 2013, EN_DASH, in all but the last example. 54*0e209d39SAndroid Build Coastguard Worker * 55*0e209d39SAndroid Build Coastguard Worker * Note, in ICU 4.4 the standard skeletons for which date interval format data 56*0e209d39SAndroid Build Coastguard Worker * is usually available are as follows; best results will be obtained by using 57*0e209d39SAndroid Build Coastguard Worker * skeletons from this set, or those formed by combining these standard skeletons 58*0e209d39SAndroid Build Coastguard Worker * (note that for these skeletons, the length of digit field such as d, y, or 59*0e209d39SAndroid Build Coastguard Worker * M vs MM is irrelevant (but for non-digit fields such as MMM vs MMMM it is 60*0e209d39SAndroid Build Coastguard Worker * relevant). Note that a skeleton involving h or H generally explicitly requests 61*0e209d39SAndroid Build Coastguard Worker * that time style (12- or 24-hour time respectively). For a skeleton that 62*0e209d39SAndroid Build Coastguard Worker * requests the locale's default time style (h or H), use 'j' instead of h or H. 63*0e209d39SAndroid Build Coastguard Worker * h, H, hm, Hm, 64*0e209d39SAndroid Build Coastguard Worker * hv, Hv, hmv, Hmv, 65*0e209d39SAndroid Build Coastguard Worker * d, 66*0e209d39SAndroid Build Coastguard Worker * M, MMM, MMMM, 67*0e209d39SAndroid Build Coastguard Worker * Md, MMMd, 68*0e209d39SAndroid Build Coastguard Worker * MEd, MMMEd, 69*0e209d39SAndroid Build Coastguard Worker * y, 70*0e209d39SAndroid Build Coastguard Worker * yM, yMMM, yMMMM, 71*0e209d39SAndroid Build Coastguard Worker * yMd, yMMMd, 72*0e209d39SAndroid Build Coastguard Worker * yMEd, yMMMEd 73*0e209d39SAndroid Build Coastguard Worker * 74*0e209d39SAndroid Build Coastguard Worker * Locales for which ICU 4.4 seems to have a reasonable amount of this data 75*0e209d39SAndroid Build Coastguard Worker * include: 76*0e209d39SAndroid Build Coastguard Worker * af, am, ar, be, bg, bn, ca, cs, da, de (_AT), el, en (_AU,_CA,_GB,_IE,_IN...), 77*0e209d39SAndroid Build Coastguard Worker * eo, es (_AR,_CL,_CO,...,_US) et, fa, fi, fo, fr (_BE,_CH,_CA), fur, gsw, he, 78*0e209d39SAndroid Build Coastguard Worker * hr, hu, hy, is, it (_CH), ja, kk, km, ko, lt, lv, mk, ml, mt, nb, nl )_BE), 79*0e209d39SAndroid Build Coastguard Worker * nn, pl, pt (_PT), rm, ro, ru (_UA), sk, sl, so, sq, sr, sr_Latn, sv, th, to, 80*0e209d39SAndroid Build Coastguard Worker * tr, uk, ur, vi, zh (_SG), zh_Hant (_HK,_MO) 81*0e209d39SAndroid Build Coastguard Worker */ 82*0e209d39SAndroid Build Coastguard Worker 83*0e209d39SAndroid Build Coastguard Worker /** 84*0e209d39SAndroid Build Coastguard Worker * Opaque UDateIntervalFormat object for use in C programs. 85*0e209d39SAndroid Build Coastguard Worker * @stable ICU 4.8 86*0e209d39SAndroid Build Coastguard Worker */ 87*0e209d39SAndroid Build Coastguard Worker struct UDateIntervalFormat; 88*0e209d39SAndroid Build Coastguard Worker typedef struct UDateIntervalFormat UDateIntervalFormat; /**< C typedef for struct UDateIntervalFormat. @stable ICU 4.8 */ 89*0e209d39SAndroid Build Coastguard Worker 90*0e209d39SAndroid Build Coastguard Worker struct UFormattedDateInterval; 91*0e209d39SAndroid Build Coastguard Worker /** 92*0e209d39SAndroid Build Coastguard Worker * Opaque struct to contain the results of a UDateIntervalFormat operation. 93*0e209d39SAndroid Build Coastguard Worker * @stable ICU 64 94*0e209d39SAndroid Build Coastguard Worker */ 95*0e209d39SAndroid Build Coastguard Worker typedef struct UFormattedDateInterval UFormattedDateInterval; 96*0e209d39SAndroid Build Coastguard Worker 97*0e209d39SAndroid Build Coastguard Worker /** 98*0e209d39SAndroid Build Coastguard Worker * Open a new UDateIntervalFormat object using the predefined rules for a 99*0e209d39SAndroid Build Coastguard Worker * given locale plus a specified skeleton. 100*0e209d39SAndroid Build Coastguard Worker * @param locale 101*0e209d39SAndroid Build Coastguard Worker * The locale for whose rules should be used; may be NULL for 102*0e209d39SAndroid Build Coastguard Worker * default locale. 103*0e209d39SAndroid Build Coastguard Worker * @param skeleton 104*0e209d39SAndroid Build Coastguard Worker * A pattern containing only the fields desired for the interval 105*0e209d39SAndroid Build Coastguard Worker * format, for example "Hm", "yMMMd", or "yMMMEdHm". 106*0e209d39SAndroid Build Coastguard Worker * @param skeletonLength 107*0e209d39SAndroid Build Coastguard Worker * The length of skeleton; may be -1 if the skeleton is zero-terminated. 108*0e209d39SAndroid Build Coastguard Worker * @param tzID 109*0e209d39SAndroid Build Coastguard Worker * A timezone ID specifying the timezone to use. If 0, use the default 110*0e209d39SAndroid Build Coastguard Worker * timezone. 111*0e209d39SAndroid Build Coastguard Worker * @param tzIDLength 112*0e209d39SAndroid Build Coastguard Worker * The length of tzID, or -1 if null-terminated. If 0, use the default 113*0e209d39SAndroid Build Coastguard Worker * timezone. 114*0e209d39SAndroid Build Coastguard Worker * @param status 115*0e209d39SAndroid Build Coastguard Worker * A pointer to a UErrorCode to receive any errors. 116*0e209d39SAndroid Build Coastguard Worker * @return 117*0e209d39SAndroid Build Coastguard Worker * A pointer to a UDateIntervalFormat object for the specified locale, 118*0e209d39SAndroid Build Coastguard Worker * or NULL if an error occurred. 119*0e209d39SAndroid Build Coastguard Worker * @stable ICU 4.8 120*0e209d39SAndroid Build Coastguard Worker */ 121*0e209d39SAndroid Build Coastguard Worker U_CAPI UDateIntervalFormat* U_EXPORT2 122*0e209d39SAndroid Build Coastguard Worker udtitvfmt_open(const char* locale, 123*0e209d39SAndroid Build Coastguard Worker const UChar* skeleton, 124*0e209d39SAndroid Build Coastguard Worker int32_t skeletonLength, 125*0e209d39SAndroid Build Coastguard Worker const UChar* tzID, 126*0e209d39SAndroid Build Coastguard Worker int32_t tzIDLength, 127*0e209d39SAndroid Build Coastguard Worker UErrorCode* status); 128*0e209d39SAndroid Build Coastguard Worker 129*0e209d39SAndroid Build Coastguard Worker /** 130*0e209d39SAndroid Build Coastguard Worker * Close a UDateIntervalFormat object. Once closed it may no longer be used. 131*0e209d39SAndroid Build Coastguard Worker * @param formatter 132*0e209d39SAndroid Build Coastguard Worker * The UDateIntervalFormat object to close. 133*0e209d39SAndroid Build Coastguard Worker * @stable ICU 4.8 134*0e209d39SAndroid Build Coastguard Worker */ 135*0e209d39SAndroid Build Coastguard Worker U_CAPI void U_EXPORT2 136*0e209d39SAndroid Build Coastguard Worker udtitvfmt_close(UDateIntervalFormat *formatter); 137*0e209d39SAndroid Build Coastguard Worker 138*0e209d39SAndroid Build Coastguard Worker /** 139*0e209d39SAndroid Build Coastguard Worker * Creates an object to hold the result of a UDateIntervalFormat 140*0e209d39SAndroid Build Coastguard Worker * operation. The object can be used repeatedly; it is cleared whenever 141*0e209d39SAndroid Build Coastguard Worker * passed to a format function. 142*0e209d39SAndroid Build Coastguard Worker * 143*0e209d39SAndroid Build Coastguard Worker * @param ec Set if an error occurs. 144*0e209d39SAndroid Build Coastguard Worker * @return A pointer needing ownership. 145*0e209d39SAndroid Build Coastguard Worker * @stable ICU 64 146*0e209d39SAndroid Build Coastguard Worker */ 147*0e209d39SAndroid Build Coastguard Worker U_CAPI UFormattedDateInterval* U_EXPORT2 148*0e209d39SAndroid Build Coastguard Worker udtitvfmt_openResult(UErrorCode* ec); 149*0e209d39SAndroid Build Coastguard Worker 150*0e209d39SAndroid Build Coastguard Worker /** 151*0e209d39SAndroid Build Coastguard Worker * Returns a representation of a UFormattedDateInterval as a UFormattedValue, 152*0e209d39SAndroid Build Coastguard Worker * which can be subsequently passed to any API requiring that type. 153*0e209d39SAndroid Build Coastguard Worker * 154*0e209d39SAndroid Build Coastguard Worker * The returned object is owned by the UFormattedDateInterval and is valid 155*0e209d39SAndroid Build Coastguard Worker * only as long as the UFormattedDateInterval is present and unchanged in memory. 156*0e209d39SAndroid Build Coastguard Worker * 157*0e209d39SAndroid Build Coastguard Worker * You can think of this method as a cast between types. 158*0e209d39SAndroid Build Coastguard Worker * 159*0e209d39SAndroid Build Coastguard Worker * When calling ufmtval_nextPosition(): 160*0e209d39SAndroid Build Coastguard Worker * The fields are returned from left to right. The special field category 161*0e209d39SAndroid Build Coastguard Worker * UFIELD_CATEGORY_DATE_INTERVAL_SPAN is used to indicate which datetime 162*0e209d39SAndroid Build Coastguard Worker * primitives came from which arguments: 0 means fromCalendar, and 1 means 163*0e209d39SAndroid Build Coastguard Worker * toCalendar. The span category will always occur before the 164*0e209d39SAndroid Build Coastguard Worker * corresponding fields in UFIELD_CATEGORY_DATE 165*0e209d39SAndroid Build Coastguard Worker * in the ufmtval_nextPosition() iterator. 166*0e209d39SAndroid Build Coastguard Worker * 167*0e209d39SAndroid Build Coastguard Worker * @param uresult The object containing the formatted string. 168*0e209d39SAndroid Build Coastguard Worker * @param ec Set if an error occurs. 169*0e209d39SAndroid Build Coastguard Worker * @return A UFormattedValue owned by the input object. 170*0e209d39SAndroid Build Coastguard Worker * @stable ICU 64 171*0e209d39SAndroid Build Coastguard Worker */ 172*0e209d39SAndroid Build Coastguard Worker U_CAPI const UFormattedValue* U_EXPORT2 173*0e209d39SAndroid Build Coastguard Worker udtitvfmt_resultAsValue(const UFormattedDateInterval* uresult, UErrorCode* ec); 174*0e209d39SAndroid Build Coastguard Worker 175*0e209d39SAndroid Build Coastguard Worker /** 176*0e209d39SAndroid Build Coastguard Worker * Releases the UFormattedDateInterval created by udtitvfmt_openResult(). 177*0e209d39SAndroid Build Coastguard Worker * 178*0e209d39SAndroid Build Coastguard Worker * @param uresult The object to release. 179*0e209d39SAndroid Build Coastguard Worker * @stable ICU 64 180*0e209d39SAndroid Build Coastguard Worker */ 181*0e209d39SAndroid Build Coastguard Worker U_CAPI void U_EXPORT2 182*0e209d39SAndroid Build Coastguard Worker udtitvfmt_closeResult(UFormattedDateInterval* uresult); 183*0e209d39SAndroid Build Coastguard Worker 184*0e209d39SAndroid Build Coastguard Worker 185*0e209d39SAndroid Build Coastguard Worker #if U_SHOW_CPLUSPLUS_API 186*0e209d39SAndroid Build Coastguard Worker 187*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_BEGIN 188*0e209d39SAndroid Build Coastguard Worker 189*0e209d39SAndroid Build Coastguard Worker /** 190*0e209d39SAndroid Build Coastguard Worker * \class LocalUDateIntervalFormatPointer 191*0e209d39SAndroid Build Coastguard Worker * "Smart pointer" class, closes a UDateIntervalFormat via udtitvfmt_close(). 192*0e209d39SAndroid Build Coastguard Worker * For most methods see the LocalPointerBase base class. 193*0e209d39SAndroid Build Coastguard Worker * 194*0e209d39SAndroid Build Coastguard Worker * @see LocalPointerBase 195*0e209d39SAndroid Build Coastguard Worker * @see LocalPointer 196*0e209d39SAndroid Build Coastguard Worker * @stable ICU 4.8 197*0e209d39SAndroid Build Coastguard Worker */ 198*0e209d39SAndroid Build Coastguard Worker U_DEFINE_LOCAL_OPEN_POINTER(LocalUDateIntervalFormatPointer, UDateIntervalFormat, udtitvfmt_close); 199*0e209d39SAndroid Build Coastguard Worker 200*0e209d39SAndroid Build Coastguard Worker /** 201*0e209d39SAndroid Build Coastguard Worker * \class LocalUFormattedDateIntervalPointer 202*0e209d39SAndroid Build Coastguard Worker * "Smart pointer" class, closes a UFormattedDateInterval via udtitvfmt_close(). 203*0e209d39SAndroid Build Coastguard Worker * For most methods see the LocalPointerBase base class. 204*0e209d39SAndroid Build Coastguard Worker * 205*0e209d39SAndroid Build Coastguard Worker * @see LocalPointerBase 206*0e209d39SAndroid Build Coastguard Worker * @see LocalPointer 207*0e209d39SAndroid Build Coastguard Worker * @stable ICU 64 208*0e209d39SAndroid Build Coastguard Worker */ 209*0e209d39SAndroid Build Coastguard Worker U_DEFINE_LOCAL_OPEN_POINTER(LocalUFormattedDateIntervalPointer, UFormattedDateInterval, udtitvfmt_closeResult); 210*0e209d39SAndroid Build Coastguard Worker 211*0e209d39SAndroid Build Coastguard Worker U_NAMESPACE_END 212*0e209d39SAndroid Build Coastguard Worker 213*0e209d39SAndroid Build Coastguard Worker #endif 214*0e209d39SAndroid Build Coastguard Worker 215*0e209d39SAndroid Build Coastguard Worker 216*0e209d39SAndroid Build Coastguard Worker /** 217*0e209d39SAndroid Build Coastguard Worker * Formats a date/time range using the conventions established for the 218*0e209d39SAndroid Build Coastguard Worker * UDateIntervalFormat object. 219*0e209d39SAndroid Build Coastguard Worker * @param formatter 220*0e209d39SAndroid Build Coastguard Worker * The UDateIntervalFormat object specifying the format conventions. 221*0e209d39SAndroid Build Coastguard Worker * @param fromDate 222*0e209d39SAndroid Build Coastguard Worker * The starting point of the range. 223*0e209d39SAndroid Build Coastguard Worker * @param toDate 224*0e209d39SAndroid Build Coastguard Worker * The ending point of the range. 225*0e209d39SAndroid Build Coastguard Worker * @param result 226*0e209d39SAndroid Build Coastguard Worker * A pointer to a buffer to receive the formatted range. 227*0e209d39SAndroid Build Coastguard Worker * @param resultCapacity 228*0e209d39SAndroid Build Coastguard Worker * The maximum size of result. 229*0e209d39SAndroid Build Coastguard Worker * @param position 230*0e209d39SAndroid Build Coastguard Worker * A pointer to a UFieldPosition. On input, position->field is read. 231*0e209d39SAndroid Build Coastguard Worker * On output, position->beginIndex and position->endIndex indicate 232*0e209d39SAndroid Build Coastguard Worker * the beginning and ending indices of field number position->field, 233*0e209d39SAndroid Build Coastguard Worker * if such a field exists. This parameter may be NULL, in which case 234*0e209d39SAndroid Build Coastguard Worker * no field position data is returned. 235*0e209d39SAndroid Build Coastguard Worker * There may be multiple instances of a given field type in an 236*0e209d39SAndroid Build Coastguard Worker * interval format; in this case the position indices refer to the 237*0e209d39SAndroid Build Coastguard Worker * first instance. 238*0e209d39SAndroid Build Coastguard Worker * @param status 239*0e209d39SAndroid Build Coastguard Worker * A pointer to a UErrorCode to receive any errors. 240*0e209d39SAndroid Build Coastguard Worker * @return 241*0e209d39SAndroid Build Coastguard Worker * The total buffer size needed; if greater than resultLength, the 242*0e209d39SAndroid Build Coastguard Worker * output was truncated. 243*0e209d39SAndroid Build Coastguard Worker * @stable ICU 4.8 244*0e209d39SAndroid Build Coastguard Worker */ 245*0e209d39SAndroid Build Coastguard Worker U_CAPI int32_t U_EXPORT2 246*0e209d39SAndroid Build Coastguard Worker udtitvfmt_format(const UDateIntervalFormat* formatter, 247*0e209d39SAndroid Build Coastguard Worker UDate fromDate, 248*0e209d39SAndroid Build Coastguard Worker UDate toDate, 249*0e209d39SAndroid Build Coastguard Worker UChar* result, 250*0e209d39SAndroid Build Coastguard Worker int32_t resultCapacity, 251*0e209d39SAndroid Build Coastguard Worker UFieldPosition* position, 252*0e209d39SAndroid Build Coastguard Worker UErrorCode* status); 253*0e209d39SAndroid Build Coastguard Worker 254*0e209d39SAndroid Build Coastguard Worker 255*0e209d39SAndroid Build Coastguard Worker /** 256*0e209d39SAndroid Build Coastguard Worker * Formats a date/time range using the conventions established for the 257*0e209d39SAndroid Build Coastguard Worker * UDateIntervalFormat object. 258*0e209d39SAndroid Build Coastguard Worker * @param formatter 259*0e209d39SAndroid Build Coastguard Worker * The UDateIntervalFormat object specifying the format conventions. 260*0e209d39SAndroid Build Coastguard Worker * @param fromDate 261*0e209d39SAndroid Build Coastguard Worker * The starting point of the range. 262*0e209d39SAndroid Build Coastguard Worker * @param toDate 263*0e209d39SAndroid Build Coastguard Worker * The ending point of the range. 264*0e209d39SAndroid Build Coastguard Worker * @param result 265*0e209d39SAndroid Build Coastguard Worker * The UFormattedDateInterval to contain the result of the 266*0e209d39SAndroid Build Coastguard Worker * formatting operation. 267*0e209d39SAndroid Build Coastguard Worker * @param status 268*0e209d39SAndroid Build Coastguard Worker * A pointer to a UErrorCode to receive any errors. 269*0e209d39SAndroid Build Coastguard Worker * @stable ICU 67 270*0e209d39SAndroid Build Coastguard Worker */ 271*0e209d39SAndroid Build Coastguard Worker U_CAPI void U_EXPORT2 272*0e209d39SAndroid Build Coastguard Worker udtitvfmt_formatToResult( 273*0e209d39SAndroid Build Coastguard Worker const UDateIntervalFormat* formatter, 274*0e209d39SAndroid Build Coastguard Worker UDate fromDate, 275*0e209d39SAndroid Build Coastguard Worker UDate toDate, 276*0e209d39SAndroid Build Coastguard Worker UFormattedDateInterval* result, 277*0e209d39SAndroid Build Coastguard Worker UErrorCode* status); 278*0e209d39SAndroid Build Coastguard Worker 279*0e209d39SAndroid Build Coastguard Worker /** 280*0e209d39SAndroid Build Coastguard Worker * Formats a date/time range using the conventions established for the 281*0e209d39SAndroid Build Coastguard Worker * UDateIntervalFormat object. 282*0e209d39SAndroid Build Coastguard Worker * @param formatter 283*0e209d39SAndroid Build Coastguard Worker * The UDateIntervalFormat object specifying the format conventions. 284*0e209d39SAndroid Build Coastguard Worker * @param fromCalendar 285*0e209d39SAndroid Build Coastguard Worker * The starting point of the range. 286*0e209d39SAndroid Build Coastguard Worker * @param toCalendar 287*0e209d39SAndroid Build Coastguard Worker * The ending point of the range. 288*0e209d39SAndroid Build Coastguard Worker * @param result 289*0e209d39SAndroid Build Coastguard Worker * The UFormattedDateInterval to contain the result of the 290*0e209d39SAndroid Build Coastguard Worker * formatting operation. 291*0e209d39SAndroid Build Coastguard Worker * @param status 292*0e209d39SAndroid Build Coastguard Worker * A pointer to a UErrorCode to receive any errors. 293*0e209d39SAndroid Build Coastguard Worker * @stable ICU 67 294*0e209d39SAndroid Build Coastguard Worker */ 295*0e209d39SAndroid Build Coastguard Worker 296*0e209d39SAndroid Build Coastguard Worker U_CAPI void U_EXPORT2 297*0e209d39SAndroid Build Coastguard Worker udtitvfmt_formatCalendarToResult( 298*0e209d39SAndroid Build Coastguard Worker const UDateIntervalFormat* formatter, 299*0e209d39SAndroid Build Coastguard Worker UCalendar* fromCalendar, 300*0e209d39SAndroid Build Coastguard Worker UCalendar* toCalendar, 301*0e209d39SAndroid Build Coastguard Worker UFormattedDateInterval* result, 302*0e209d39SAndroid Build Coastguard Worker UErrorCode* status); 303*0e209d39SAndroid Build Coastguard Worker 304*0e209d39SAndroid Build Coastguard Worker /** 305*0e209d39SAndroid Build Coastguard Worker * Set a particular UDisplayContext value in the formatter, such as 306*0e209d39SAndroid Build Coastguard Worker * UDISPCTX_CAPITALIZATION_FOR_STANDALONE. This causes the formatted 307*0e209d39SAndroid Build Coastguard Worker * result to be capitalized appropriately for the context in which 308*0e209d39SAndroid Build Coastguard Worker * it is intended to be used, considering both the locale and the 309*0e209d39SAndroid Build Coastguard Worker * type of field at the beginning of the formatted result. 310*0e209d39SAndroid Build Coastguard Worker * @param formatter The formatter for which to set a UDisplayContext value. 311*0e209d39SAndroid Build Coastguard Worker * @param value The UDisplayContext value to set. 312*0e209d39SAndroid Build Coastguard Worker * @param status A pointer to an UErrorCode to receive any errors 313*0e209d39SAndroid Build Coastguard Worker * @stable ICU 68 314*0e209d39SAndroid Build Coastguard Worker */ 315*0e209d39SAndroid Build Coastguard Worker U_CAPI void U_EXPORT2 316*0e209d39SAndroid Build Coastguard Worker udtitvfmt_setContext(UDateIntervalFormat* formatter, UDisplayContext value, UErrorCode* status); 317*0e209d39SAndroid Build Coastguard Worker 318*0e209d39SAndroid Build Coastguard Worker /** 319*0e209d39SAndroid Build Coastguard Worker * Get the formatter's UDisplayContext value for the specified UDisplayContextType, 320*0e209d39SAndroid Build Coastguard Worker * such as UDISPCTX_TYPE_CAPITALIZATION. 321*0e209d39SAndroid Build Coastguard Worker * @param formatter The formatter to query. 322*0e209d39SAndroid Build Coastguard Worker * @param type The UDisplayContextType whose value to return 323*0e209d39SAndroid Build Coastguard Worker * @param status A pointer to an UErrorCode to receive any errors 324*0e209d39SAndroid Build Coastguard Worker * @return The UDisplayContextValue for the specified type. 325*0e209d39SAndroid Build Coastguard Worker * @stable ICU 68 326*0e209d39SAndroid Build Coastguard Worker */ 327*0e209d39SAndroid Build Coastguard Worker U_CAPI UDisplayContext U_EXPORT2 328*0e209d39SAndroid Build Coastguard Worker udtitvfmt_getContext(const UDateIntervalFormat* formatter, UDisplayContextType type, UErrorCode* status); 329*0e209d39SAndroid Build Coastguard Worker 330*0e209d39SAndroid Build Coastguard Worker #endif /* #if !UCONFIG_NO_FORMATTING */ 331*0e209d39SAndroid Build Coastguard Worker 332*0e209d39SAndroid Build Coastguard Worker #endif 333