164339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert// Copyright (C) 2016 and later: Unicode, Inc. and others.
264339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert// License & terms of use: http://www.unicode.org/copyright.html
3b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/*
4b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *******************************************************************************
58de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert * Copyright (C) 1996-2016, International Business Machines
6b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Corporation and others. All Rights Reserved.
7b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *******************************************************************************
8b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/
9b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
10b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#ifndef UDAT_H
11b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#define UDAT_H
12b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
13b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/utypes.h"
14b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
15b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#if !UCONFIG_NO_FORMATTING
16b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
1750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#include "unicode/localpointer.h"
18b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/ucal.h"
19b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#include "unicode/unum.h"
2054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#include "unicode/udisplaycontext.h"
211b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert#include "unicode/ufieldpositer.h"
22b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
23b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \file
24b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \brief C API: DateFormat
25b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *
26b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <h2> Date Format C API</h2>
27b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *
28b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Date Format C API  consists of functions that convert dates and
29b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * times from their internal representations to textual form and back again in a
30b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * language-independent manner. Converting from the internal representation (milliseconds
31b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * since midnight, January 1, 1970) to text is known as "formatting," and converting
32b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * from text to millis is known as "parsing."  We currently define only one concrete
33b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * structure UDateFormat, which can handle pretty much all normal
34b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * date formatting and parsing actions.
35b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P>
36b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Date Format helps you to format and parse dates for any locale. Your code can
37b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * be completely independent of the locale conventions for months, days of the
38b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * week, or even the calendar format: lunar vs. solar.
39b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P>
40b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * To format a date for the current Locale with default time and date style,
41b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * use one of the static factory methods:
42b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <pre>
43b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \code
44b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  UErrorCode status = U_ZERO_ERROR;
45b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  UChar *myString;
46b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  int32_t myStrlen = 0;
47b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  UDateFormat* dfmt = udat_open(UDAT_DEFAULT, UDAT_DEFAULT, NULL, NULL, -1, NULL, -1, &status);
48b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  myStrlen = udat_format(dfmt, myDate, NULL, myStrlen, NULL, &status);
49b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  if (status==U_BUFFER_OVERFLOW_ERROR){
50b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *      status=U_ZERO_ERROR;
51b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *      myString=(UChar*)malloc(sizeof(UChar) * (myStrlen+1) );
52b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *      udat_format(dfmt, myDate, myString, myStrlen+1, NULL, &status);
53b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  }
54b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \endcode
55b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </pre>
56b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * If you are formatting multiple numbers, it is more efficient to get the
57b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * format and use it multiple times so that the system doesn't have to fetch the
58b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * information about the local language and country conventions multiple times.
59b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <pre>
60b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \code
61b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  UErrorCode status = U_ZERO_ERROR;
62b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  int32_t i, myStrlen = 0;
63b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  UChar* myString;
64b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  char buffer[1024];
65b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  UDate myDateArr[] = { 0.0, 100000000.0, 2000000000.0 }; // test values
66b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  UDateFormat* df = udat_open(UDAT_DEFAULT, UDAT_DEFAULT, NULL, NULL, -1, NULL, 0, &status);
67b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  for (i = 0; i < 3; i++) {
68b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *      myStrlen = udat_format(df, myDateArr[i], NULL, myStrlen, NULL, &status);
69b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *      if(status == U_BUFFER_OVERFLOW_ERROR){
70b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *          status = U_ZERO_ERROR;
71b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *          myString = (UChar*)malloc(sizeof(UChar) * (myStrlen+1) );
72b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *          udat_format(df, myDateArr[i], myString, myStrlen+1, NULL, &status);
73b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *          printf("%s\n", u_austrcpy(buffer, myString) );
74b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *          free(myString);
75b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *      }
76b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  }
77b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \endcode
78b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </pre>
79b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * To get specific fields of a date, you can use UFieldPosition to
80b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * get specific fields.
81b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <pre>
82b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \code
83b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  UErrorCode status = U_ZERO_ERROR;
84b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  UFieldPosition pos;
85b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  UChar *myString;
86b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  int32_t myStrlen = 0;
87b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  char buffer[1024];
88b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *
89b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  pos.field = 1;  // Same as the DateFormat::EField enum
90b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  UDateFormat* dfmt = udat_open(UDAT_DEFAULT, UDAT_DEFAULT, NULL, -1, NULL, 0, &status);
91b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  myStrlen = udat_format(dfmt, myDate, NULL, myStrlen, &pos, &status);
92b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  if (status==U_BUFFER_OVERFLOW_ERROR){
93b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *      status=U_ZERO_ERROR;
94b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *      myString=(UChar*)malloc(sizeof(UChar) * (myStrlen+1) );
95b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *      udat_format(dfmt, myDate, myString, myStrlen+1, &pos, &status);
96b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  }
97b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  printf("date format: %s\n", u_austrcpy(buffer, myString));
98b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  buffer[pos.endIndex] = 0;   // NULL terminate the string.
99b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  printf("UFieldPosition position equals %s\n", &buffer[pos.beginIndex]);
100b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \endcode
101b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </pre>
102b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * To format a date for a different Locale, specify it in the call to
103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * udat_open()
104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <pre>
105b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \code
106b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *        UDateFormat* df = udat_open(UDAT_SHORT, UDAT_SHORT, "fr_FR", NULL, -1, NULL, 0, &status);
107b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \endcode
108b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </pre>
109b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * You can use a DateFormat API udat_parse() to parse.
110b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <pre>
111b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \code
112b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  UErrorCode status = U_ZERO_ERROR;
113b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  int32_t parsepos=0;
114b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  UDate myDate = udat_parse(df, myString, u_strlen(myString), &parsepos, &status);
115b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * \endcode
116b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </pre>
117b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  You can pass in different options for the arguments for date and time style
118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  to control the length of the result; from SHORT to MEDIUM to LONG to FULL.
119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  The exact result depends on the locale, but generally:
120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  see UDateFormatStyle for more details
121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <ul type=round>
122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *   <li>   UDAT_SHORT is completely numeric, such as 12/13/52 or 3:30pm
123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *   <li>   UDAT_MEDIUM is longer, such as Jan 12, 1952
124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *   <li>   UDAT_LONG is longer, such as January 12, 1952 or 3:30:32pm
125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *   <li>   UDAT_FULL is pretty completely specified, such as
126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *          Tuesday, April 12, 1952 AD or 3:30:42pm PST.
127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </ul>
128b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * You can also set the time zone on the format if you wish.
129b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <P>
130b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * You can also use forms of the parse and format methods with Parse Position and
131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * UFieldPosition to allow you to
132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * <ul type=round>
133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *   <li>   Progressively parse through pieces of a string.
134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *   <li>   Align any particular field, or find out where it is for selection
135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *          on the screen.
136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * </ul>
13759d709d503bab6e2b61931737e662dd293b40578ccornelius * <p><strong>Date and Time Patterns:</strong></p>
13859d709d503bab6e2b61931737e662dd293b40578ccornelius *
13959d709d503bab6e2b61931737e662dd293b40578ccornelius * <p>Date and time formats are specified by <em>date and time pattern</em> strings.
14059d709d503bab6e2b61931737e662dd293b40578ccornelius * Within date and time pattern strings, all unquoted ASCII letters [A-Za-z] are reserved
14159d709d503bab6e2b61931737e662dd293b40578ccornelius * as pattern letters representing calendar fields. <code>UDateFormat</code> supports
14259d709d503bab6e2b61931737e662dd293b40578ccornelius * the date and time formatting algorithm and pattern letters defined by
14359d709d503bab6e2b61931737e662dd293b40578ccornelius * <a href="http://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table">UTS#35
14459d709d503bab6e2b61931737e662dd293b40578ccornelius * Unicode Locale Data Markup Language (LDML)</a> and further documented for ICU in the
14559d709d503bab6e2b61931737e662dd293b40578ccornelius * <a href="https://sites.google.com/site/icuprojectuserguide/formatparse/datetime?pli=1#TOC-Date-Field-Symbol-Table">ICU
14659d709d503bab6e2b61931737e662dd293b40578ccornelius * User Guide</a>.</p>
147b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */
148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** A date formatter.
150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  For usage in C programs.
151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  @stable ICU 2.6
152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */
153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querutypedef void* UDateFormat;
154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
1558de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert/** The possible date/time format styles
156b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  @stable ICU 2.6
157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */
158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querutypedef enum UDateFormatStyle {
159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /** Full style */
160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_FULL,
161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /** Long style */
162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_LONG,
163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /** Medium style */
164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_MEDIUM,
165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /** Short style */
166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_SHORT,
167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /** Default style */
168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_DEFAULT = UDAT_MEDIUM,
169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /** Bitfield for relative date */
171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_RELATIVE = (1 << 7),
1728de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert
173b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_FULL_RELATIVE = UDAT_FULL | UDAT_RELATIVE,
1748de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert
175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_LONG_RELATIVE = UDAT_LONG | UDAT_RELATIVE,
1768de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert
177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_MEDIUM_RELATIVE = UDAT_MEDIUM | UDAT_RELATIVE,
1788de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert
179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_SHORT_RELATIVE = UDAT_SHORT | UDAT_RELATIVE,
1808de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert
1818de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert
182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /** No style */
183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_NONE = -1,
184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
185103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius    /**
18654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius     * Use the pattern given in the parameter to udat_open
18754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius     * @see udat_open
18859d709d503bab6e2b61931737e662dd293b40578ccornelius     * @stable ICU 50
189103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius     */
19054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius    UDAT_PATTERN = -2,
191103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius
192fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#ifndef U_HIDE_INTERNAL_API
19354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius    /** @internal alias to UDAT_PATTERN */
19454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius    UDAT_IGNORE = UDAT_PATTERN
195fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#endif /* U_HIDE_INTERNAL_API */
19654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius} UDateFormatStyle;
19754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius
19859d709d503bab6e2b61931737e662dd293b40578ccornelius/* Skeletons for dates. */
199c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
200c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru/**
20154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with year.
202b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * @stable ICU 4.0
203c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru */
20454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_YEAR                       "y"
205c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru/**
20654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with quarter.
207fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51
20854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
20954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_QUARTER                    "QQQQ"
21054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
21154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with abbreviated quarter.
212fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51
21354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
21454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_ABBR_QUARTER               "QQQ"
21554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
21654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with year and quarter.
21754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @stable ICU 4.0
21854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
21954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_YEAR_QUARTER               "yQQQQ"
22054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
22154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with year and abbreviated quarter.
22254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @stable ICU 4.0
22354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
22454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_YEAR_ABBR_QUARTER          "yQQQ"
22554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
22654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with month.
22754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @stable ICU 4.0
22854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
22954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_MONTH                      "MMMM"
23054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
23154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with abbreviated month.
23254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @stable ICU 4.0
23354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
23454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_ABBR_MONTH                 "MMM"
23554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
23654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with numeric month.
23754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @stable ICU 4.0
23854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
23954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_NUM_MONTH                  "M"
24054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
24154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with year and month.
24250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @stable ICU 4.0
243c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru */
244c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#define UDAT_YEAR_MONTH                 "yMMMM"
24554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
24654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with year and abbreviated month.
24754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @stable ICU 4.0
24854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
249c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#define UDAT_YEAR_ABBR_MONTH            "yMMM"
25054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
25154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with year and numeric month.
25254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @stable ICU 4.0
25354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
25454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_YEAR_NUM_MONTH             "yM"
25554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
25654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with day.
25754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @stable ICU 4.0
25854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
25954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_DAY                        "d"
26054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
26154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with year, month, and day.
26254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Used in combinations date + time, date + time + zone, or time + zone.
26354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @stable ICU 4.0
26454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
265c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#define UDAT_YEAR_MONTH_DAY             "yMMMMd"
26654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
26754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with year, abbreviated month, and day.
26854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Used in combinations date + time, date + time + zone, or time + zone.
26954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @stable ICU 4.0
27054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
271c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#define UDAT_YEAR_ABBR_MONTH_DAY        "yMMMd"
27254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
27354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with year, numeric month, and day.
27454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Used in combinations date + time, date + time + zone, or time + zone.
27554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @stable ICU 4.0
27654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
277c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru#define UDAT_YEAR_NUM_MONTH_DAY         "yMd"
27854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
27954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with weekday.
280fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51
28154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
28254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_WEEKDAY                    "EEEE"
28354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
28454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with abbreviated weekday.
285fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51
28654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
28754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_ABBR_WEEKDAY               "E"
28854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
28954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with year, month, weekday, and day.
29054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Used in combinations date + time, date + time + zone, or time + zone.
29154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @stable ICU 4.0
29254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
29354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_YEAR_MONTH_WEEKDAY_DAY     "yMMMMEEEEd"
29454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
29554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with year, abbreviated month, weekday, and day.
29654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Used in combinations date + time, date + time + zone, or time + zone.
29754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @stable ICU 4.0
29854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
2998de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert#define UDAT_YEAR_ABBR_MONTH_WEEKDAY_DAY "yMMMEd"
30054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
30154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with year, numeric month, weekday, and day.
30254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Used in combinations date + time, date + time + zone, or time + zone.
30354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @stable ICU 4.0
30454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
30554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_YEAR_NUM_MONTH_WEEKDAY_DAY "yMEd"
30654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
30754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with long month and day.
30854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Used in combinations date + time, date + time + zone, or time + zone.
30954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @stable ICU 4.0
31054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
31154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_MONTH_DAY                  "MMMMd"
31254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
31354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with abbreviated month and day.
31454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Used in combinations date + time, date + time + zone, or time + zone.
31554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @stable ICU 4.0
31654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
31754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_ABBR_MONTH_DAY             "MMMd"
31854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
31954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with numeric month and day.
32054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Used in combinations date + time, date + time + zone, or time + zone.
32154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @stable ICU 4.0
32254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
32354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_NUM_MONTH_DAY              "Md"
32454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
32554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with month, weekday, and day.
32654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Used in combinations date + time, date + time + zone, or time + zone.
32754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @stable ICU 4.0
32854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
32954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_MONTH_WEEKDAY_DAY          "MMMMEEEEd"
33054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
33154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with abbreviated month, weekday, and day.
33254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Used in combinations date + time, date + time + zone, or time + zone.
33354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @stable ICU 4.0
33454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
33554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_ABBR_MONTH_WEEKDAY_DAY     "MMMEd"
33654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
33754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with numeric month, weekday, and day.
33854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Used in combinations date + time, date + time + zone, or time + zone.
33954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @stable ICU 4.0
34054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
34154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_NUM_MONTH_WEEKDAY_DAY      "MEd"
342c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
34359d709d503bab6e2b61931737e662dd293b40578ccornelius/* Skeletons for times. */
344b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
34554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
34654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with hour, with the locale's preferred hour format (12 or 24).
34754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @stable ICU 4.0
34854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
34954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_HOUR                       "j"
35054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
35154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with hour in 24-hour presentation.
352fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51
35354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
35454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_HOUR24                     "H"
35554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
35654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with minute.
357fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51
35854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
35954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_MINUTE                     "m"
36054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
36154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with hour and minute, with the locale's preferred hour format (12 or 24).
36254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Used in combinations date + time, date + time + zone, or time + zone.
36354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @stable ICU 4.0
36454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
36554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_HOUR_MINUTE                "jm"
36654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
36754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with hour and minute in 24-hour presentation.
36854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Used in combinations date + time, date + time + zone, or time + zone.
36954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @stable ICU 4.0
37054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
37154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_HOUR24_MINUTE              "Hm"
37254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
37354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with second.
374fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51
37554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
37654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_SECOND                     "s"
37754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
37854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with hour, minute, and second,
37954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * with the locale's preferred hour format (12 or 24).
38054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Used in combinations date + time, date + time + zone, or time + zone.
38154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @stable ICU 4.0
38254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
38354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_HOUR_MINUTE_SECOND         "jms"
38454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
38554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with hour, minute, and second in
38654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * 24-hour presentation.
38754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Used in combinations date + time, date + time + zone, or time + zone.
38854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @stable ICU 4.0
38954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
39054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_HOUR24_MINUTE_SECOND       "Hms"
39154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
39254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with minute and second.
39354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Used in combinations date + time, date + time + zone, or time + zone.
39454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @stable ICU 4.0
39554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
39654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_MINUTE_SECOND              "ms"
39754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius
39859d709d503bab6e2b61931737e662dd293b40578ccornelius/* Skeletons for time zones. */
39954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius
40054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
40154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for <i>generic location format</i>, such as Los Angeles Time;
40254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * used in combinations date + time + zone, or time + zone.
40354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @see <a href="http://unicode.org/reports/tr35/#Date_Format_Patterns">LDML Date Format Patterns</a>
40454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @see <a href="http://unicode.org/reports/tr35/#Time_Zone_Fallback">LDML Time Zone Fallback</a>
405fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51
40654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
40754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_LOCATION_TZ "VVVV"
40854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
40954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for <i>generic non-location format</i>, such as Pacific Time;
41054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * used in combinations date + time + zone, or time + zone.
41154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @see <a href="http://unicode.org/reports/tr35/#Date_Format_Patterns">LDML Date Format Patterns</a>
41254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @see <a href="http://unicode.org/reports/tr35/#Time_Zone_Fallback">LDML Time Zone Fallback</a>
413fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51
41454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
41554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_GENERIC_TZ "vvvv"
41654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
41754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for <i>generic non-location format</i>, abbreviated if possible, such as PT;
41854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * used in combinations date + time + zone, or time + zone.
41954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @see <a href="http://unicode.org/reports/tr35/#Date_Format_Patterns">LDML Date Format Patterns</a>
42054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @see <a href="http://unicode.org/reports/tr35/#Time_Zone_Fallback">LDML Time Zone Fallback</a>
421fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51
42254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
42354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_ABBR_GENERIC_TZ "v"
42454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
42554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for <i>specific non-location format</i>, such as Pacific Daylight Time;
42654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * used in combinations date + time + zone, or time + zone.
42754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @see <a href="http://unicode.org/reports/tr35/#Date_Format_Patterns">LDML Date Format Patterns</a>
42854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @see <a href="http://unicode.org/reports/tr35/#Time_Zone_Fallback">LDML Time Zone Fallback</a>
429fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51
43054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
43154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_SPECIFIC_TZ "zzzz"
43254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
43354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for <i>specific non-location format</i>, abbreviated if possible, such as PDT;
43454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * used in combinations date + time + zone, or time + zone.
43554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @see <a href="http://unicode.org/reports/tr35/#Date_Format_Patterns">LDML Date Format Patterns</a>
43654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @see <a href="http://unicode.org/reports/tr35/#Time_Zone_Fallback">LDML Time Zone Fallback</a>
437fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51
43854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
43954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_ABBR_SPECIFIC_TZ "z"
44054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
44154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for <i>localized GMT/UTC format</i>, such as GMT+8:00 or HPG-8:00;
44254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * used in combinations date + time + zone, or time + zone.
44354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @see <a href="http://unicode.org/reports/tr35/#Date_Format_Patterns">LDML Date Format Patterns</a>
44454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @see <a href="http://unicode.org/reports/tr35/#Time_Zone_Fallback">LDML Time Zone Fallback</a>
445fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51
44654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
44754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_ABBR_UTC_TZ "ZZZZ"
44854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius
44959d709d503bab6e2b61931737e662dd293b40578ccornelius/* deprecated skeleton constants */
45054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius
4518de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert#ifndef U_HIDE_DEPRECATED_API
45254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
45354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with standalone month.
45454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @deprecated ICU 50 Use UDAT_MONTH instead.
45554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
45654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_STANDALONE_MONTH           "LLLL"
45754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
45854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with standalone abbreviated month.
45954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @deprecated ICU 50 Use UDAT_ABBR_MONTH instead.
46054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
46154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_ABBR_STANDALONE_MONTH      "LLL"
46254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius
46354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
46454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with hour, minute, and generic timezone.
46554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @deprecated ICU 50 Use instead UDAT_HOUR_MINUTE UDAT_ABBR_GENERIC_TZ or some other timezone presentation.
46654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
46754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_HOUR_MINUTE_GENERIC_TZ     "jmv"
46854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
46954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with hour, minute, and timezone.
47054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @deprecated ICU 50 Use instead UDAT_HOUR_MINUTE UDAT_ABBR_SPECIFIC_TZ or some other timezone presentation.
47154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
47254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_HOUR_MINUTE_TZ             "jmz"
47354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
47454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with hour and generic timezone.
47554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @deprecated ICU 50 Use instead UDAT_HOUR UDAT_ABBR_GENERIC_TZ or some other timezone presentation.
47654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
47754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_HOUR_GENERIC_TZ            "jv"
47854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius/**
47954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Constant for date skeleton with hour and timezone.
48054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @deprecated ICU 50 Use instead UDAT_HOUR UDAT_ABBR_SPECIFIC_TZ or some other timezone presentation.
48154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius */
48254dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius#define UDAT_HOUR_TZ                    "jz"
4838393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#endif  /* U_HIDE_DEPRECATED_API */
484c69afcec261fc345fda8daf46f0ea6b4351dc777Jean-Baptiste Queru
485b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
486b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * FieldPosition and UFieldPosition selectors for format fields
487b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * defined by DateFormat and UDateFormat.
488b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 3.0
489b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */
490b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querutypedef enum UDateFormatField {
491b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
492b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition and UFieldPosition selector for 'G' field alignment,
493b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to the UCAL_ERA field.
494b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.0
495b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
496b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_ERA_FIELD = 0,
497b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
498b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
499b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition and UFieldPosition selector for 'y' field alignment,
500b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to the UCAL_YEAR field.
501b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.0
502b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
503b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_YEAR_FIELD = 1,
504b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
505b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
506b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition and UFieldPosition selector for 'M' field alignment,
507b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to the UCAL_MONTH field.
508b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.0
509b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
510b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_MONTH_FIELD = 2,
511b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
512b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
513b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition and UFieldPosition selector for 'd' field alignment,
514b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to the UCAL_DATE field.
515b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.0
516b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
517b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_DATE_FIELD = 3,
518b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
519b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
520b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition and UFieldPosition selector for 'k' field alignment,
521b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to the UCAL_HOUR_OF_DAY field.
522b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * UDAT_HOUR_OF_DAY1_FIELD is used for the one-based 24-hour clock.
523b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * For example, 23:59 + 01:00 results in 24:59.
524b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.0
525b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
526b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_HOUR_OF_DAY1_FIELD = 4,
527b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
528b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
529b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition and UFieldPosition selector for 'H' field alignment,
530b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to the UCAL_HOUR_OF_DAY field.
531b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * UDAT_HOUR_OF_DAY0_FIELD is used for the zero-based 24-hour clock.
532b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * For example, 23:59 + 01:00 results in 00:59.
533b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.0
534b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
535b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_HOUR_OF_DAY0_FIELD = 5,
536b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
537b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
538b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition and UFieldPosition selector for 'm' field alignment,
539b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to the UCAL_MINUTE field.
540b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.0
541b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
542b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_MINUTE_FIELD = 6,
543b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
544b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
545b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition and UFieldPosition selector for 's' field alignment,
546b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to the UCAL_SECOND field.
547b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.0
548b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
549b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_SECOND_FIELD = 7,
550b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
551b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
552b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition and UFieldPosition selector for 'S' field alignment,
553b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to the UCAL_MILLISECOND field.
55454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius     *
55554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius     * Note: Time formats that use 'S' can display a maximum of three
55654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius     * significant digits for fractional seconds, corresponding to millisecond
55754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius     * resolution and a fractional seconds sub-pattern of SSS. If the
55854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius     * sub-pattern is S or SS, the fractional seconds value will be truncated
55954dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius     * (not rounded) to the number of display places specified. If the
56054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius     * fractional seconds sub-pattern is longer than SSS, the additional
56154dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius     * display places will be filled with zeros.
562b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.0
563b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
564b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_FRACTIONAL_SECOND_FIELD = 8,
565b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
566b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
567b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition and UFieldPosition selector for 'E' field alignment,
568b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to the UCAL_DAY_OF_WEEK field.
569b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.0
570b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
571b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_DAY_OF_WEEK_FIELD = 9,
572b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
573b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
574b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition and UFieldPosition selector for 'D' field alignment,
575b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to the UCAL_DAY_OF_YEAR field.
576b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.0
577b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
578b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_DAY_OF_YEAR_FIELD = 10,
579b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
580b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
581b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition and UFieldPosition selector for 'F' field alignment,
582b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to the UCAL_DAY_OF_WEEK_IN_MONTH field.
583b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.0
584b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
585b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_DAY_OF_WEEK_IN_MONTH_FIELD = 11,
586b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
587b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
588b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition and UFieldPosition selector for 'w' field alignment,
589b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to the UCAL_WEEK_OF_YEAR field.
590b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.0
591b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
592b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_WEEK_OF_YEAR_FIELD = 12,
593b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
594b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
595b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition and UFieldPosition selector for 'W' field alignment,
596b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to the UCAL_WEEK_OF_MONTH field.
597b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.0
598b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
599b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_WEEK_OF_MONTH_FIELD = 13,
600b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
601b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
602b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition and UFieldPosition selector for 'a' field alignment,
603b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to the UCAL_AM_PM field.
604b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.0
605b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
606b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_AM_PM_FIELD = 14,
607b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
608b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
609b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition and UFieldPosition selector for 'h' field alignment,
610b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to the UCAL_HOUR field.
611b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * UDAT_HOUR1_FIELD is used for the one-based 12-hour clock.
612b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * For example, 11:30 PM + 1 hour results in 12:30 AM.
613b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.0
614b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
615b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_HOUR1_FIELD = 15,
616b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
617b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
618b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition and UFieldPosition selector for 'K' field alignment,
619b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to the UCAL_HOUR field.
620b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * UDAT_HOUR0_FIELD is used for the zero-based 12-hour clock.
621b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * For example, 11:30 PM + 1 hour results in 00:30 AM.
622b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.0
623b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
624b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_HOUR0_FIELD = 16,
625b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
626b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
627b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition and UFieldPosition selector for 'z' field alignment,
628b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to the UCAL_ZONE_OFFSET and
629b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * UCAL_DST_OFFSET fields.
630b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.0
631b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
632b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_TIMEZONE_FIELD = 17,
633b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
634b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
635b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition and UFieldPosition selector for 'Y' field alignment,
636b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to the UCAL_YEAR_WOY field.
637b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.0
638b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
639b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_YEAR_WOY_FIELD = 18,
640b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
641b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
642b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition and UFieldPosition selector for 'e' field alignment,
643b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to the UCAL_DOW_LOCAL field.
644b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.0
645b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
646b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_DOW_LOCAL_FIELD = 19,
647b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
648b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
649b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition and UFieldPosition selector for 'u' field alignment,
650b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to the UCAL_EXTENDED_YEAR field.
651b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.0
652b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
653b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_EXTENDED_YEAR_FIELD = 20,
654b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
655b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
656b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition and UFieldPosition selector for 'g' field alignment,
657b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to the UCAL_JULIAN_DAY field.
658b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.0
659b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
660b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_JULIAN_DAY_FIELD = 21,
661b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
662b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
663b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition and UFieldPosition selector for 'A' field alignment,
664b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to the UCAL_MILLISECONDS_IN_DAY field.
665b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.0
666b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
667b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_MILLISECONDS_IN_DAY_FIELD = 22,
668b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
669b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
670b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition and UFieldPosition selector for 'Z' field alignment,
671b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to the UCAL_ZONE_OFFSET and
672b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * UCAL_DST_OFFSET fields.
673b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.0
674b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
675b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_TIMEZONE_RFC_FIELD = 23,
676b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
677b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
678b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition and UFieldPosition selector for 'v' field alignment,
679b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to the UCAL_ZONE_OFFSET field.
680b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.4
681b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
682b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_TIMEZONE_GENERIC_FIELD = 24,
683b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
684b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition selector for 'c' field alignment,
68550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho     * corresponding to the {@link #UCAL_DOW_LOCAL} field.
686b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * This displays the stand alone day name, if available.
687b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.4
688b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
689b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_STANDALONE_DAY_FIELD = 25,
69050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
691b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
692b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition selector for 'L' field alignment,
69350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho     * corresponding to the {@link #UCAL_MONTH} field.
694b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * This displays the stand alone month name, if available.
695b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.4
696b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
697b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_STANDALONE_MONTH_FIELD = 26,
698b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
699b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
700b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition selector for "Q" field alignment,
701b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to quarters. This is implemented
702b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * using the {@link #UCAL_MONTH} field. This
703b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * displays the quarter.
704b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.6
705b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
706b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_QUARTER_FIELD = 27,
707b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
708b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
709b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition selector for the "q" field alignment,
710b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to stand-alone quarters. This is
711b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * implemented using the {@link #UCAL_MONTH} field.
712b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * This displays the stand-alone quarter.
713b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.6
714b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
715b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_STANDALONE_QUARTER_FIELD = 28,
716b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
717b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /**
718b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * FieldPosition and UFieldPosition selector for 'V' field alignment,
719b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * corresponding to the UCAL_ZONE_OFFSET field.
720b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * @stable ICU 3.8
721b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
722b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_TIMEZONE_SPECIAL_FIELD = 29,
723b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
724103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius    /**
725103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius     * FieldPosition selector for "U" field alignment,
726103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius     * corresponding to cyclic year names. This is implemented
727103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius     * using the {@link #UCAL_YEAR} field. This displays
728103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius     * the cyclic year name, if available.
7298393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius     * @stable ICU 49
730103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius     */
731103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius    UDAT_YEAR_NAME_FIELD = 30,
732103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius
7338393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    /**
7348393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius     * FieldPosition selector for 'O' field alignment,
7358393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius     * corresponding to the UCAL_ZONE_OFFSET and UCAL_DST_OFFSETfields.
7368393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius     * This displays the localized GMT format.
737fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius     * @stable ICU 51
7388393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius     */
7398393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    UDAT_TIMEZONE_LOCALIZED_GMT_OFFSET_FIELD = 31,
7408393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
7418393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    /**
7428393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius     * FieldPosition selector for 'X' field alignment,
7438393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius     * corresponding to the UCAL_ZONE_OFFSET and UCAL_DST_OFFSETfields.
7448393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius     * This displays the ISO 8601 local time offset format or UTC indicator ("Z").
745fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius     * @stable ICU 51
7468393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius     */
7478393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    UDAT_TIMEZONE_ISO_FIELD = 32,
7488393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
7498393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    /**
7508393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius     * FieldPosition selector for 'x' field alignment,
751fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius     * corresponding to the UCAL_ZONE_OFFSET and UCAL_DST_OFFSET fields.
7528393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius     * This displays the ISO 8601 local time offset format.
753fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius     * @stable ICU 51
7548393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius     */
7558393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    UDAT_TIMEZONE_ISO_LOCAL_FIELD = 33,
7568393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius
757fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius#ifndef U_HIDE_INTERNAL_API
7588393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    /**
759fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius     * FieldPosition and UFieldPosition selector for 'r' field alignment,
760fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius     * no directly corresponding UCAL_ field.
761fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius     * @internal ICU 53
762fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius     */
763fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius    UDAT_RELATED_YEAR_FIELD = 34,
7648de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert#endif  /* U_HIDE_INTERNAL_API */
765fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius
7661b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert#ifndef U_HIDE_DRAFT_API
7671b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert    /**
7688de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert     * FieldPosition selector for 'b' field alignment.
7698de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert     * Displays midnight and noon for 12am and 12pm, respectively, if available;
7708de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert     * otherwise fall back to AM / PM.
7718de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert     * @draft ICU 57
7728de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert     */
7738de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert    UDAT_AM_PM_MIDNIGHT_NOON_FIELD = 35,
7748de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert
7758de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert    /* FieldPosition selector for 'B' field alignment.
7768de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert     * Displays flexible day periods, such as "in the morning", if available.
7778de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert     * @draft ICU 57
7788de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert     */
7798de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert    UDAT_FLEXIBLE_DAY_PERIOD_FIELD = 36,
7808de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert#endif /* U_HIDE_DRAFT_API */
7818de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert
7828de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert#ifndef U_HIDE_INTERNAL_API
7838de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert    /**
784c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert     * FieldPosition and UFieldPosition selector for time separator,
785c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert     * no corresponding UCAL_ field. No pattern character is currently
786c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert     * defined for this.
7878de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert     * @internal
7881b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert     */
7898de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert    UDAT_TIME_SEPARATOR_FIELD = 37,
7908de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert#endif  /* U_HIDE_INTERNAL_API */
7911b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert
79264339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert#ifndef U_HIDE_DEPRECATED_API
79364339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert    /**
79450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho     * Number of FieldPosition and UFieldPosition selectors for
795b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * DateFormat and UDateFormat.
796b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     * Valid selectors range from 0 to UDAT_FIELD_COUNT-1.
79764339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert     * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
798b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru     */
7998de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert    UDAT_FIELD_COUNT = 38
80064339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert#endif  // U_HIDE_DEPRECATED_API
801b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} UDateFormatField;
802b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
80350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
804c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert#ifndef U_HIDE_INTERNAL_API
805c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert/**
806c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert * Is a pattern character defined for UDAT_TIME_SEPARATOR_FIELD?
807c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert * In ICU 55 it was COLON, but that was withdrawn in ICU 56.
808c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert * @internal ICU 56
809c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert */
810c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert#define UDAT_HAS_PATTERN_CHAR_FOR_TIME_SEPARATOR 0
811c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert#endif /* U_HIDE_INTERNAL_API */
812c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert
813c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert
81450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/**
81550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Maps from a UDateFormatField to the corresponding UCalendarDateFields.
81650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * Note: since the mapping is many-to-one, there is no inverse mapping.
81750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @param field the UDateFormatField.
81850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @return the UCalendarDateField.  This will be UCAL_FIELD_COUNT in case
81950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * of error (e.g., the input field is UDAT_FIELD_COUNT).
82027f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable ICU 4.4
82150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */
82227f654740f2a26ad62a5c155af9199af9e69b889clairehoU_STABLE UCalendarDateFields U_EXPORT2
82350294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoudat_toCalendarDateField(UDateFormatField field);
82450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
82550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
826b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
827b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Open a new UDateFormat for formatting and parsing dates and times.
828b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * A UDateFormat may be used to format dates in calls to {@link #udat_format },
829b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * and to parse dates in calls to {@link #udat_parse }.
830b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param timeStyle The style used to format times; one of UDAT_FULL, UDAT_LONG,
831b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * UDAT_MEDIUM, UDAT_SHORT, UDAT_DEFAULT, or UDAT_NONE (relative time styles
832103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * are not currently supported).
83354dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * When the pattern parameter is used, pass in UDAT_PATTERN for both timeStyle and dateStyle.
834b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param dateStyle The style used to format dates; one of UDAT_FULL, UDAT_LONG,
835b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru * UDAT_MEDIUM, UDAT_SHORT, UDAT_DEFAULT, UDAT_FULL_RELATIVE, UDAT_LONG_RELATIVE,
83654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * UDAT_MEDIUM_RELATIVE, UDAT_SHORT_RELATIVE, or UDAT_NONE.
83754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * When the pattern parameter is used, pass in UDAT_PATTERN for both timeStyle and dateStyle.
83854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * As currently implemented,
839103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * relative date formatting only affects a limited range of calendar days before or
840103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * after the current date, based on the CLDR &lt;field type="day"&gt;/&lt;relative&gt; data: For
841103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * example, in English, "Yesterday", "Today", and "Tomorrow". Outside of this range,
842103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * dates are formatted using the corresponding non-relative style.
843b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param locale The locale specifying the formatting conventions
844b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param tzID A timezone ID specifying the timezone to use.  If 0, use
845b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * the default timezone.
846b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param tzIDLength The length of tzID, or -1 if null-terminated.
847b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param pattern A pattern specifying the format to use.
848b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param patternLength The number of characters in the pattern, or -1 if null-terminated.
849b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status A pointer to an UErrorCode to receive any errors
850b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A pointer to a UDateFormat to use for formatting dates and times, or 0 if
851b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * an error occurred.
852b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0
853b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */
8548de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_STABLE UDateFormat* U_EXPORT2
855b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudat_open(UDateFormatStyle  timeStyle,
856b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru          UDateFormatStyle  dateStyle,
857b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru          const char        *locale,
858b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru          const UChar       *tzID,
859b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru          int32_t           tzIDLength,
860b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru          const UChar       *pattern,
861b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru          int32_t           patternLength,
862b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru          UErrorCode        *status);
863b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
864b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
865b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
866b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Close a UDateFormat.
867b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Once closed, a UDateFormat may no longer be used.
868b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param format The formatter to close.
869b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0
870b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/
8718de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_STABLE void U_EXPORT2
872b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudat_close(UDateFormat* format);
873b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
87459d709d503bab6e2b61931737e662dd293b40578ccornelius
87559d709d503bab6e2b61931737e662dd293b40578ccornelius/**
87659d709d503bab6e2b61931737e662dd293b40578ccornelius * DateFormat boolean attributes
8778de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert *
8781b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert * @stable ICU 53
87959d709d503bab6e2b61931737e662dd293b40578ccornelius */
88059d709d503bab6e2b61931737e662dd293b40578ccorneliustypedef enum UDateFormatBooleanAttribute {
881fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius   /**
88259d709d503bab6e2b61931737e662dd293b40578ccornelius     * indicates whether whitespace is allowed. Includes trailing dot tolerance.
8831b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert     * @stable ICU 53
88459d709d503bab6e2b61931737e662dd293b40578ccornelius     */
885fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius    UDAT_PARSE_ALLOW_WHITESPACE = 0,
88659d709d503bab6e2b61931737e662dd293b40578ccornelius    /**
88759d709d503bab6e2b61931737e662dd293b40578ccornelius     * indicates tolerance of numeric data when String data may be assumed. eg: UDAT_YEAR_NAME_FIELD,
888f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius     * UDAT_STANDALONE_MONTH_FIELD, UDAT_DAY_OF_WEEK_FIELD
8891b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert     * @stable ICU 53
890fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius     */
891fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius    UDAT_PARSE_ALLOW_NUMERIC = 1,
892fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius    /**
893fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius     * indicates tolerance of a partial literal match
894c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert     * e.g. accepting "--mon-02-march-2011" for a pattern of "'--: 'EEE-WW-MMMM-yyyy"
89564339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert     * @stable ICU 56
89659d709d503bab6e2b61931737e662dd293b40578ccornelius     */
897c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert    UDAT_PARSE_PARTIAL_LITERAL_MATCH = 2,
8988de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert    /**
8998de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert     * indicates tolerance of pattern mismatch between input data and specified format pattern.
9008de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert     * e.g. accepting "September" for a month pattern of MMM ("Sep")
90164339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert     * @stable ICU 56
9028de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert     */
903fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius    UDAT_PARSE_MULTIPLE_PATTERNS_FOR_MATCH = 3,
90464339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert
90564339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert    // Do not conditionalize the following with #ifndef U_HIDE_DEPRECATED_API,
90664339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert    // it is needed for layout of DateFormat object.
90759d709d503bab6e2b61931737e662dd293b40578ccornelius    /**
90864339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert     * One more than the highest normal UDateFormatBooleanAttribute value.
90964339d36f8bd4db5025fe2988eda22b491a9219cFredrik Roubert     * @deprecated ICU 58 The numeric value may change over time, see ICU ticket #12420.
91059d709d503bab6e2b61931737e662dd293b40578ccornelius     */
911fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius    UDAT_BOOLEAN_ATTRIBUTE_COUNT = 4
91259d709d503bab6e2b61931737e662dd293b40578ccornelius} UDateFormatBooleanAttribute;
91359d709d503bab6e2b61931737e662dd293b40578ccornelius
91459d709d503bab6e2b61931737e662dd293b40578ccornelius/**
91559d709d503bab6e2b61931737e662dd293b40578ccornelius * Get a boolean attribute associated with a UDateFormat.
91659d709d503bab6e2b61931737e662dd293b40578ccornelius * An example would be a true value for a key of UDAT_PARSE_ALLOW_WHITESPACE indicating allowing whitespace leniency.
91759d709d503bab6e2b61931737e662dd293b40578ccornelius * If the formatter does not understand the attribute, -1 is returned.
91859d709d503bab6e2b61931737e662dd293b40578ccornelius * @param fmt The formatter to query.
91959d709d503bab6e2b61931737e662dd293b40578ccornelius * @param attr The attribute to query; e.g. UDAT_PARSE_ALLOW_WHITESPACE.
92059d709d503bab6e2b61931737e662dd293b40578ccornelius * @param status A pointer to an UErrorCode to receive any errors
92159d709d503bab6e2b61931737e662dd293b40578ccornelius * @return The value of attr.
9221b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert * @stable ICU 53
92359d709d503bab6e2b61931737e662dd293b40578ccornelius */
9241b7d32f919554dda9c193b32188251337bc756f1Fredrik RoubertU_STABLE UBool U_EXPORT2
92559d709d503bab6e2b61931737e662dd293b40578ccorneliusudat_getBooleanAttribute(const UDateFormat* fmt, UDateFormatBooleanAttribute attr, UErrorCode* status);
92659d709d503bab6e2b61931737e662dd293b40578ccornelius
92759d709d503bab6e2b61931737e662dd293b40578ccornelius/**
92859d709d503bab6e2b61931737e662dd293b40578ccornelius * Set a boolean attribute associated with a UDateFormat.
92959d709d503bab6e2b61931737e662dd293b40578ccornelius * An example of a boolean attribute is parse leniency control.  If the formatter does not understand
93059d709d503bab6e2b61931737e662dd293b40578ccornelius * the attribute, the call is ignored.
93159d709d503bab6e2b61931737e662dd293b40578ccornelius * @param fmt The formatter to set.
93259d709d503bab6e2b61931737e662dd293b40578ccornelius * @param attr The attribute to set; one of UDAT_PARSE_ALLOW_WHITESPACE or UDAT_PARSE_ALLOW_NUMERIC
93359d709d503bab6e2b61931737e662dd293b40578ccornelius * @param newValue The new value of attr.
93459d709d503bab6e2b61931737e662dd293b40578ccornelius * @param status A pointer to an UErrorCode to receive any errors
9351b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert * @stable ICU 53
93659d709d503bab6e2b61931737e662dd293b40578ccornelius */
9371b7d32f919554dda9c193b32188251337bc756f1Fredrik RoubertU_STABLE void U_EXPORT2
938fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusudat_setBooleanAttribute(UDateFormat *fmt, UDateFormatBooleanAttribute attr, UBool newValue, UErrorCode* status);
93959d709d503bab6e2b61931737e662dd293b40578ccornelius
94059d709d503bab6e2b61931737e662dd293b40578ccornelius
94159d709d503bab6e2b61931737e662dd293b40578ccornelius
94250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#if U_SHOW_CPLUSPLUS_API
94350294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
94450294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_NAMESPACE_BEGIN
94550294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
94650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho/**
94750294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * \class LocalUDateFormatPointer
94850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * "Smart pointer" class, closes a UDateFormat via udat_close().
94950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * For most methods see the LocalPointerBase base class.
95050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho *
95150294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @see LocalPointerBase
95250294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho * @see LocalPointer
95327f654740f2a26ad62a5c155af9199af9e69b889claireho * @stable ICU 4.4
95450294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho */
95550294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_DEFINE_LOCAL_OPEN_POINTER(LocalUDateFormatPointer, UDateFormat, udat_close);
95650294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
95750294ead5e5d23f5bbfed76e00e6b510bd41eee1clairehoU_NAMESPACE_END
95850294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
95950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho#endif
96050294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
961b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
962b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Open a copy of a UDateFormat.
963b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * This function performs a deep copy.
964b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param fmt The format to copy
965b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status A pointer to an UErrorCode to receive any errors.
966b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return A pointer to a UDateFormat identical to fmt.
967b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.0
968b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */
9698de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_STABLE UDateFormat* U_EXPORT2
970b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudat_clone(const UDateFormat *fmt,
971b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru       UErrorCode *status);
972b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
973b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
9741b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* Format a date using a UDateFormat.
975b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* The date will be formatted using the conventions specified in {@link #udat_open }
976b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param format The formatter to use
977b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param dateToFormat The date to format
978b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param result A pointer to a buffer to receive the formatted number.
979b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param resultLength The maximum size of result.
980b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param position A pointer to a UFieldPosition.  On input, position->field
981b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* is read.  On output, position->beginIndex and position->endIndex indicate
982b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* the beginning and ending indices of field number position->field, if such
983b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* a field exists.  This parameter may be NULL, in which case no field
984b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* position data is returned.
985b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param status A pointer to an UErrorCode to receive any errors
986b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return The total buffer size needed; if greater than resultLength, the output was truncated.
987b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see udat_parse
988b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see UFieldPosition
989b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0
990b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/
9918de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_STABLE int32_t U_EXPORT2
992b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudat_format(    const    UDateFormat*    format,
993b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                        UDate           dateToFormat,
994b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                        UChar*          result,
995b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                        int32_t         resultLength,
996b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                        UFieldPosition* position,
997b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                        UErrorCode*     status);
998b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
9991b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert/**
10001b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* Format a date using an UDateFormat.
10011b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* The date will be formatted using the conventions specified in {@link #udat_open }
10021b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @param format The formatter to use
10031b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @param calendar The calendar to format. The calendar instance might be
10041b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*                 mutated if fields are not yet fully calculated, though
10051b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*                 the function won't change the logical date and time held
10061b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*                 by the instance.
10071b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @param result A pointer to a buffer to receive the formatted number.
10081b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @param capacity The maximum size of result.
10091b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @param position A pointer to a UFieldPosition.  On input, position->field
10101b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* is read.  On output, position->beginIndex and position->endIndex indicate
10111b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* the beginning and ending indices of field number position->field, if such
10121b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* a field exists.  This parameter may be NULL, in which case no field
10131b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* position data is returned.
10141b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @param status A pointer to an UErrorCode to receive any errors
10151b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @return The total buffer size needed; if greater than resultLength, the output was truncated.
10161b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @see udat_format
10171b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @see udat_parseCalendar
10181b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @see UFieldPosition
10198de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert* @stable ICU 55
10201b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*/
10218de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_STABLE int32_t U_EXPORT2
10221b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubertudat_formatCalendar(    const UDateFormat*  format,
10231b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert                        UCalendar*      calendar,
10241b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert                        UChar*          result,
10251b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert                        int32_t         capacity,
10261b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert                        UFieldPosition* position,
10271b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert                        UErrorCode*     status);
10281b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert
10291b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert/**
10301b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* Format a date using a UDateFormat.
10311b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* The date will be formatted using the conventions specified in {@link #udat_open}
10321b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @param format
10331b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          The formatter to use
10341b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @param dateToFormat
10351b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          The date to format
10361b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @param result
10371b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          A pointer to a buffer to receive the formatted number.
10381b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @param resultLength
10391b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          The maximum size of result.
10401b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @param fpositer
10411b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          A pointer to a UFieldPositionIterator created by {@link #ufieldpositer_open}
10421b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          (may be NULL if field position information is not needed). Any
10431b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          iteration information already present in the UFieldPositionIterator
10441b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          will be deleted, and the iterator will be reset to apply to the
10451b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          fields in the formatted string created by this function call; the
10461b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          field values provided by {@link #ufieldpositer_next} will be from the
10471b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          UDateFormatField enum.
10481b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @param status
10491b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          A pointer to a UErrorCode to receive any errors
10501b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @return
10511b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          The total buffer size needed; if greater than resultLength, the output was truncated.
10521b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @see udat_parse
10531b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @see UFieldPositionIterator
10548de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert* @stable ICU 55
10551b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*/
10568de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_STABLE int32_t U_EXPORT2
10571b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubertudat_formatForFields(   const UDateFormat* format,
10581b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert                        UDate           dateToFormat,
10591b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert                        UChar*          result,
10601b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert                        int32_t         resultLength,
10611b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert                        UFieldPositionIterator* fpositer,
10621b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert                        UErrorCode*     status);
10631b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert
10641b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert/**
10651b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* Format a date using a UDateFormat.
10661b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* The date will be formatted using the conventions specified in {@link #udat_open }
10671b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @param format
10681b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          The formatter to use
10691b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @param calendar
10701b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          The calendar to format. The calendar instance might be mutated if fields
10711b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          are not yet fully calculated, though the function won't change the logical
10721b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          date and time held by the instance.
10731b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @param result
10741b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          A pointer to a buffer to receive the formatted number.
10751b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @param capacity
10761b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          The maximum size of result.
10771b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @param fpositer
10781b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          A pointer to a UFieldPositionIterator created by {@link #ufieldpositer_open}
10791b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          (may be NULL if field position information is not needed). Any
10801b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          iteration information already present in the UFieldPositionIterator
10811b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          will be deleted, and the iterator will be reset to apply to the
10821b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          fields in the formatted string created by this function call; the
10831b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          field values provided by {@link #ufieldpositer_next} will be from the
10841b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          UDateFormatField enum.
10851b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @param status
10861b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          A pointer to a UErrorCode to receive any errors
10871b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @return
10881b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*          The total buffer size needed; if greater than resultLength, the output was truncated.
10891b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @see udat_format
10901b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @see udat_parseCalendar
10911b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert* @see UFieldPositionIterator
10928de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert* @stable ICU 55
10931b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert*/
10948de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_STABLE int32_t U_EXPORT2
10951b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubertudat_formatCalendarForFields( const UDateFormat* format,
10961b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert                        UCalendar*      calendar,
10971b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert                        UChar*          result,
10981b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert                        int32_t         capacity,
10991b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert                        UFieldPositionIterator* fpositer,
11001b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert                        UErrorCode*     status);
11011b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert
11021b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert
1103b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
1104b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Parse a string into an date/time using a UDateFormat.
1105103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius* The date will be parsed using the conventions specified in {@link #udat_open }.
1106103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius* <P>
1107103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius* Note that the normal date formats associated with some calendars - such
1108103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius* as the Chinese lunar calendar - do not specify enough fields to enable
1109103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius* dates to be parsed unambiguously. In the case of the Chinese lunar
1110103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius* calendar, while the year within the current 60-year cycle is specified,
1111103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius* the number of such cycles since the start date of the calendar (in the
1112103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius* UCAL_ERA field of the UCalendar object) is not normally part of the format,
1113103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius* and parsing may assume the wrong era. For cases such as this it is
1114103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius* recommended that clients parse using udat_parseCalendar with the UCalendar
1115103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius* passed in set to the current date, or to a date within the era/cycle that
1116103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius* should be assumed if absent in the format.
1117103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius*
1118b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param format The formatter to use.
1119b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param text The text to parse.
1120b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param textLength The length of text, or -1 if null-terminated.
1121b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param parsePos If not 0, on input a pointer to an integer specifying the offset at which
1122b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* to begin parsing.  If not 0, on output the offset at which parsing ended.
1123b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param status A pointer to an UErrorCode to receive any errors
1124b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return The value of the parsed date/time
1125b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see udat_format
1126b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0
1127b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/
11288de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_STABLE UDate U_EXPORT2
1129103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusudat_parse(const    UDateFormat*    format,
1130103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius           const    UChar*          text,
1131b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                    int32_t         textLength,
1132b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                    int32_t         *parsePos,
1133b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                    UErrorCode      *status);
1134b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
1135b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
1136b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Parse a string into an date/time using a UDateFormat.
1137103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius* The date will be parsed using the conventions specified in {@link #udat_open }.
1138b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param format The formatter to use.
1139103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius* @param calendar A calendar set on input to the date and time to be used for
1140103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius*                 missing values in the date/time string being parsed, and set
1141103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius*                 on output to the parsed date/time. When the calendar type is
1142103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius*                 different from the internal calendar held by the UDateFormat
1143103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius*                 instance, the internal calendar will be cloned to a work
1144103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius*                 calendar set to the same milliseconds and time zone as this
1145103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius*                 calendar parameter, field values will be parsed based on the
1146103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius*                 work calendar, then the result (milliseconds and time zone)
1147103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius*                 will be set in this calendar.
1148b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param text The text to parse.
1149b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param textLength The length of text, or -1 if null-terminated.
1150b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param parsePos If not 0, on input a pointer to an integer specifying the offset at which
1151b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* to begin parsing.  If not 0, on output the offset at which parsing ended.
1152b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param status A pointer to an UErrorCode to receive any errors
1153b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see udat_format
1154b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0
1155b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/
11568de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_STABLE void U_EXPORT2
1157b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudat_parseCalendar(const    UDateFormat*    format,
1158b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                            UCalendar*      calendar,
1159b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                   const    UChar*          text,
1160b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                            int32_t         textLength,
1161b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                            int32_t         *parsePos,
1162b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                            UErrorCode      *status);
1163b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
1164b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
1165b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Determine if an UDateFormat will perform lenient parsing.
1166b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* With lenient parsing, the parser may use heuristics to interpret inputs that do not
1167b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* precisely match the pattern. With strict parsing, inputs must match the pattern.
1168b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param fmt The formatter to query
1169b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return TRUE if fmt is set to perform lenient parsing, FALSE otherwise.
1170b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see udat_setLenient
1171b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0
1172b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/
11738de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_STABLE UBool U_EXPORT2
1174b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudat_isLenient(const UDateFormat* fmt);
1175b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
1176b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
1177b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Specify whether an UDateFormat will perform lenient parsing.
1178b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* With lenient parsing, the parser may use heuristics to interpret inputs that do not
1179b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* precisely match the pattern. With strict parsing, inputs must match the pattern.
1180b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param fmt The formatter to set
1181b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param isLenient TRUE if fmt should perform lenient parsing, FALSE otherwise.
1182b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see dat_isLenient
1183b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0
1184b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/
11858de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_STABLE void U_EXPORT2
1186b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudat_setLenient(    UDateFormat*    fmt,
1187b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                    UBool          isLenient);
1188b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
1189b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
1190b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Get the UCalendar associated with an UDateFormat.
1191b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* A UDateFormat uses a UCalendar to convert a raw value to, for example,
1192b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* the day of the week.
1193b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param fmt The formatter to query.
1194b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return A pointer to the UCalendar used by fmt.
1195b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see udat_setCalendar
1196b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0
1197b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/
11988de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_STABLE const UCalendar* U_EXPORT2
1199b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudat_getCalendar(const UDateFormat* fmt);
1200b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
1201b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
1202b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Set the UCalendar associated with an UDateFormat.
1203b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* A UDateFormat uses a UCalendar to convert a raw value to, for example,
1204b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* the day of the week.
1205b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param fmt The formatter to set.
1206b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param calendarToSet A pointer to an UCalendar to be used by fmt.
1207b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see udat_setCalendar
1208b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0
1209b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/
12108de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_STABLE void U_EXPORT2
1211b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudat_setCalendar(            UDateFormat*    fmt,
1212b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                    const   UCalendar*      calendarToSet);
1213b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
1214b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
1215b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Get the UNumberFormat associated with an UDateFormat.
1216b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* A UDateFormat uses a UNumberFormat to format numbers within a date,
1217b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* for example the day number.
1218b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param fmt The formatter to query.
1219b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return A pointer to the UNumberFormat used by fmt to format numbers.
1220b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see udat_setNumberFormat
1221b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0
1222b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/
12238de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_STABLE const UNumberFormat* U_EXPORT2
1224b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudat_getNumberFormat(const UDateFormat* fmt);
1225b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
1226f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius/**
1227f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius* Get the UNumberFormat for specific field associated with an UDateFormat.
1228f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius* For example: 'y' for year and 'M' for month
1229f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius* @param fmt The formatter to query.
1230f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius* @param field the field to query
1231f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius* @return A pointer to the UNumberFormat used by fmt to format field numbers.
1232f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius* @see udat_setNumberFormatForField
1233c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert* @stable ICU 54
1234f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius*/
12358de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_STABLE const UNumberFormat* U_EXPORT2
1236f9878a236aa0d9662d8e40cafdaf2e04cd615835ccorneliusudat_getNumberFormatForField(const UDateFormat* fmt, UChar field);
1237f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius
1238f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius/**
1239f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius* Set the UNumberFormat for specific field associated with an UDateFormat.
1240f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius* It can be a single field like: "y"(year) or "M"(month)
1241f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius* It can be several field combined together: "yM"(year and month)
12428de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert* Note:
1243f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius* 1 symbol field is enough for multiple symbol field (so "y" will override "yy", "yyy")
1244f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius* If the field is not numeric, then override has no effect (like "MMM" will use abbreviation, not numerical field)
1245f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius*
1246f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius* @param fields the fields to set
1247f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius* @param fmt The formatter to set.
1248f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius* @param numberFormatToSet A pointer to the UNumberFormat to be used by fmt to format numbers.
1249f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius* @param status error code passed around (memory allocation or invalid fields)
1250f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius* @see udat_getNumberFormatForField
1251c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert* @stable ICU 54
1252f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius*/
12538de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_STABLE void U_EXPORT2
1254f9878a236aa0d9662d8e40cafdaf2e04cd615835ccorneliusudat_adoptNumberFormatForFields(  UDateFormat* fmt,
1255f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius                            const UChar* fields,
1256f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius                                  UNumberFormat*  numberFormatToSet,
1257f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius                                  UErrorCode* status);
1258b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
1259b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Set the UNumberFormat associated with an UDateFormat.
1260b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* A UDateFormat uses a UNumberFormat to format numbers within a date,
1261b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* for example the day number.
12628de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert* This method also clears per field NumberFormat instances previously
12638de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert* set by {@see udat_setNumberFormatForField}
1264b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param fmt The formatter to set.
1265b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param numberFormatToSet A pointer to the UNumberFormat to be used by fmt to format numbers.
1266b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see udat_getNumberFormat
1267f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius* @see udat_setNumberFormatForField
1268b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0
1269b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/
12708de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_STABLE void U_EXPORT2
1271b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudat_setNumberFormat(            UDateFormat*    fmt,
1272b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                        const   UNumberFormat*  numberFormatToSet);
1273f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius/**
1274f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius* Adopt the UNumberFormat associated with an UDateFormat.
1275f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius* A UDateFormat uses a UNumberFormat to format numbers within a date,
1276f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius* for example the day number.
1277f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius* @param fmt The formatter to set.
1278f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius* @param numberFormatToAdopt A pointer to the UNumberFormat to be used by fmt to format numbers.
1279f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius* @see udat_getNumberFormat
1280c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert* @stable ICU 54
1281f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius*/
12828de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_STABLE void U_EXPORT2
1283f9878a236aa0d9662d8e40cafdaf2e04cd615835ccorneliusudat_adoptNumberFormat(            UDateFormat*    fmt,
1284f9878a236aa0d9662d8e40cafdaf2e04cd615835ccornelius                                   UNumberFormat*  numberFormatToAdopt);
1285b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
1286b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Get a locale for which date/time formatting patterns are available.
1287b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* A UDateFormat in a locale returned by this function will perform the correct
1288b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* formatting and parsing for the locale.
1289b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* @param localeIndex The index of the desired locale.
1290b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return A locale for which date/time formatting patterns are available, or 0 if none.
1291b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see udat_countAvailable
1292b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0
1293b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/
12948de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_STABLE const char* U_EXPORT2
1295b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queruudat_getAvailable(int32_t localeIndex);
1296b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
1297b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
1298b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Determine how many locales have date/time  formatting patterns available.
1299b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* This function is most useful as determining the loop ending condition for
1300b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* calls to {@link #udat_getAvailable }.
1301b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return The number of locales for which date/time formatting patterns are available.
1302b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see udat_getAvailable
1303b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0
1304b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/
13058de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_STABLE int32_t U_EXPORT2
1306b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudat_countAvailable(void);
1307b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
1308b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
1309b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Get the year relative to which all 2-digit years are interpreted.
1310b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* For example, if the 2-digit start year is 2100, the year 99 will be
1311b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* interpreted as 2199.
1312b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param fmt The formatter to query.
1313b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param status A pointer to an UErrorCode to receive any errors
1314b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return The year relative to which all 2-digit years are interpreted.
1315b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see udat_Set2DigitYearStart
1316b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0
1317b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/
13188de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_STABLE UDate U_EXPORT2
1319b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudat_get2DigitYearStart(    const   UDateFormat     *fmt,
1320b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                                    UErrorCode      *status);
1321b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
1322b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
1323b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Set the year relative to which all 2-digit years will be interpreted.
1324b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* For example, if the 2-digit start year is 2100, the year 99 will be
1325b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* interpreted as 2199.
1326b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param fmt The formatter to set.
1327b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param d The year relative to which all 2-digit years will be interpreted.
1328b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param status A pointer to an UErrorCode to receive any errors
1329b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see udat_Set2DigitYearStart
1330b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0
1331b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/
13328de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_STABLE void U_EXPORT2
1333b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudat_set2DigitYearStart(    UDateFormat     *fmt,
1334b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                            UDate           d,
1335b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                            UErrorCode      *status);
1336b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
1337b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
1338b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Extract the pattern from a UDateFormat.
1339b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* The pattern will follow the pattern syntax rules.
1340b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param fmt The formatter to query.
1341b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param localized TRUE if the pattern should be localized, FALSE otherwise.
1342b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param result A pointer to a buffer to receive the pattern.
1343b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param resultLength The maximum size of result.
1344b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param status A pointer to an UErrorCode to receive any errors
1345b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return The total buffer size needed; if greater than resultLength, the output was truncated.
1346b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see udat_applyPattern
1347b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0
1348b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/
13498de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_STABLE int32_t U_EXPORT2
1350b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudat_toPattern(    const   UDateFormat     *fmt,
1351b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                        UBool          localized,
1352b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                        UChar           *result,
1353b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                        int32_t         resultLength,
1354b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                        UErrorCode      *status);
1355b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
1356b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
1357b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Set the pattern used by an UDateFormat.
1358b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* The pattern should follow the pattern syntax rules.
1359b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param format The formatter to set.
1360b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param localized TRUE if the pattern is localized, FALSE otherwise.
1361b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param pattern The new pattern
1362b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param patternLength The length of pattern, or -1 if null-terminated.
1363b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see udat_toPattern
1364b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0
1365b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/
13668de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_STABLE void U_EXPORT2
1367b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudat_applyPattern(            UDateFormat     *format,
1368b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                            UBool          localized,
1369b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                    const   UChar           *pattern,
1370b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                            int32_t         patternLength);
1371b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
13728de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert/**
13738de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert * The possible types of date format symbols
1374b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.6
1375b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */
1376b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querutypedef enum UDateFormatSymbolType {
1377b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /** The era names, for example AD */
1378b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_ERAS,
1379b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /** The month names, for example February */
1380b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_MONTHS,
1381b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /** The short month names, for example Feb. */
1382b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_SHORT_MONTHS,
13838393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    /** The CLDR-style format "wide" weekday names, for example Monday */
1384b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_WEEKDAYS,
13858393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    /**
13868393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius     * The CLDR-style format "abbreviated" (not "short") weekday names, for example "Mon."
13878393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius     * For the CLDR-style format "short" weekday names, use UDAT_SHORTER_WEEKDAYS.
13888393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius     */
1389b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_SHORT_WEEKDAYS,
1390b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /** The AM/PM names, for example AM */
1391b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_AM_PMS,
1392b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /** The localized characters */
1393b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_LOCALIZED_CHARS,
1394b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /** The long era names, for example Anno Domini */
1395b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_ERA_NAMES,
1396b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /** The narrow month names, for example F */
1397b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_NARROW_MONTHS,
13988393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    /** The CLDR-style format "narrow" weekday names, for example "M" */
1399b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_NARROW_WEEKDAYS,
1400b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /** Standalone context versions of months */
1401b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_STANDALONE_MONTHS,
1402b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_STANDALONE_SHORT_MONTHS,
1403b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_STANDALONE_NARROW_MONTHS,
14048393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    /** The CLDR-style stand-alone "wide" weekday names */
1405b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_STANDALONE_WEEKDAYS,
14068393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    /**
14078393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius     * The CLDR-style stand-alone "abbreviated" (not "short") weekday names.
14088393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius     * For the CLDR-style stand-alone "short" weekday names, use UDAT_STANDALONE_SHORTER_WEEKDAYS.
14098393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius     */
1410b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_STANDALONE_SHORT_WEEKDAYS,
14118393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    /** The CLDR-style stand-alone "narrow" weekday names */
1412b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_STANDALONE_NARROW_WEEKDAYS,
1413b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /** The quarters, for example 1st Quarter */
1414b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_QUARTERS,
1415b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /** The short quarter names, for example Q1 */
1416b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_SHORT_QUARTERS,
1417b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    /** Standalone context versions of quarters */
1418b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru    UDAT_STANDALONE_QUARTERS,
14198393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    UDAT_STANDALONE_SHORT_QUARTERS,
14208393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    /**
14218393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius     * The CLDR-style short weekday names, e.g. "Su", Mo", etc.
14228393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius     * These are named "SHORTER" to contrast with the constants using _SHORT_
14238393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius     * above, which actually get the CLDR-style *abbreviated* versions of the
14248393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius     * corresponding names.
1425fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius     * @stable ICU 51
14268393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius     */
14278393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    UDAT_SHORTER_WEEKDAYS,
14288393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius    /**
14298393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius     * Standalone version of UDAT_SHORTER_WEEKDAYS.
1430fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius     * @stable ICU 51
14318393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius     */
1432c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert    UDAT_STANDALONE_SHORTER_WEEKDAYS,
14331b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert    /**
14341b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert     * Cyclic year names (only supported for some calendars, and only for FORMAT usage;
14351b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert     * udat_setSymbols not supported for UDAT_CYCLIC_YEARS_WIDE)
1436c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert     * @stable ICU 54
14371b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert     */
14381b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert    UDAT_CYCLIC_YEARS_WIDE,
14391b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert    /**
14401b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert     * Cyclic year names (only supported for some calendars, and only for FORMAT usage)
1441c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert     * @stable ICU 54
14421b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert     */
14431b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert    UDAT_CYCLIC_YEARS_ABBREVIATED,
14441b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert    /**
14451b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert     * Cyclic year names (only supported for some calendars, and only for FORMAT usage;
14461b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert     * udat_setSymbols not supported for UDAT_CYCLIC_YEARS_NARROW)
1447c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert     * @stable ICU 54
14481b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert     */
14491b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert    UDAT_CYCLIC_YEARS_NARROW,
14501b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert    /**
14511b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert     * Calendar zodiac  names (only supported for some calendars, and only for FORMAT usage;
14521b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert     * udat_setSymbols not supported for UDAT_ZODIAC_NAMES_WIDE)
1453c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert     * @stable ICU 54
14541b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert     */
14551b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert    UDAT_ZODIAC_NAMES_WIDE,
14561b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert    /**
14571b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert     * Calendar zodiac  names (only supported for some calendars, and only for FORMAT usage)
1458c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert     * @stable ICU 54
14591b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert     */
14601b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert    UDAT_ZODIAC_NAMES_ABBREVIATED,
14611b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert    /**
14621b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert     * Calendar zodiac  names (only supported for some calendars, and only for FORMAT usage;
14631b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert     * udat_setSymbols not supported for UDAT_ZODIAC_NAMES_NARROW)
1464c14898b482f76ecab9026615e2e4c6fe78358bdcFredrik Roubert     * @stable ICU 54
14651b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert     */
14661b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert    UDAT_ZODIAC_NAMES_NARROW
1467b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru} UDateFormatSymbolType;
1468b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
1469b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querustruct UDateFormatSymbols;
1470b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/** Date format symbols.
1471b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  For usage in C programs.
1472b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru *  @stable ICU 2.6
1473b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */
1474b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Querutypedef struct UDateFormatSymbols UDateFormatSymbols;
1475b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
1476b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
1477b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Get the symbols associated with an UDateFormat.
1478b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* The symbols are what a UDateFormat uses to represent locale-specific data,
1479b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* for example month or day names.
1480b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param fmt The formatter to query.
1481b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param type The type of symbols to get.  One of UDAT_ERAS, UDAT_MONTHS, UDAT_SHORT_MONTHS,
1482b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* UDAT_WEEKDAYS, UDAT_SHORT_WEEKDAYS, UDAT_AM_PMS, or UDAT_LOCALIZED_CHARS
1483b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* @param symbolIndex The desired symbol of type type.
1484b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param result A pointer to a buffer to receive the pattern.
1485b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param resultLength The maximum size of result.
1486b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param status A pointer to an UErrorCode to receive any errors
1487b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return The total buffer size needed; if greater than resultLength, the output was truncated.
1488b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see udat_countSymbols
1489b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see udat_setSymbols
1490b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0
1491b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/
14928de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_STABLE int32_t U_EXPORT2
1493b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudat_getSymbols(const   UDateFormat             *fmt,
1494b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                        UDateFormatSymbolType   type,
1495b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru                        int32_t                 symbolIndex,
1496b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                        UChar                   *result,
1497b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                        int32_t                 resultLength,
1498b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                        UErrorCode              *status);
1499b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
1500b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
1501b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Count the number of particular symbols for an UDateFormat.
1502b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* This function is most useful as for detemining the loop termination condition
1503b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* for calls to {@link #udat_getSymbols }.
1504b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param fmt The formatter to query.
1505b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param type The type of symbols to count.  One of UDAT_ERAS, UDAT_MONTHS, UDAT_SHORT_MONTHS,
1506b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* UDAT_WEEKDAYS, UDAT_SHORT_WEEKDAYS, UDAT_AM_PMS, or UDAT_LOCALIZED_CHARS
1507b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @return The number of symbols of type type.
1508b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see udat_getSymbols
1509b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see udat_setSymbols
1510b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0
1511b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/
15128de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_STABLE int32_t U_EXPORT2
1513b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudat_countSymbols(    const    UDateFormat                *fmt,
1514b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                            UDateFormatSymbolType    type);
1515b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
1516b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
1517b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* Set the symbols associated with an UDateFormat.
1518b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* The symbols are what a UDateFormat uses to represent locale-specific data,
1519b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* for example month or day names.
1520b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param format The formatter to set
1521b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param type The type of symbols to set.  One of UDAT_ERAS, UDAT_MONTHS, UDAT_SHORT_MONTHS,
1522b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* UDAT_WEEKDAYS, UDAT_SHORT_WEEKDAYS, UDAT_AM_PMS, or UDAT_LOCALIZED_CHARS
1523b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* @param symbolIndex The index of the symbol to set of type type.
1524b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param value The new value
1525b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param valueLength The length of value, or -1 if null-terminated
1526b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @param status A pointer to an UErrorCode to receive any errors
1527b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see udat_getSymbols
1528b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @see udat_countSymbols
1529b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru* @stable ICU 2.0
1530b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru*/
15318de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_STABLE void U_EXPORT2
1532b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudat_setSymbols(    UDateFormat             *format,
1533b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                    UDateFormatSymbolType   type,
1534b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru                    int32_t                 symbolIndex,
1535b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                    UChar                   *value,
1536b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                    int32_t                 valueLength,
1537b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                    UErrorCode              *status);
1538b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
1539b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru/**
1540b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * Get the locale for this date format object.
1541b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * You can choose between valid and actual locale.
1542b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param fmt The formatter to get the locale from
15438de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert * @param type type of the locale we're looking for (valid or actual)
1544b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @param status error code for the operation
1545b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @return the locale name
1546b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru * @stable ICU 2.8
1547b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru */
1548b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste QueruU_STABLE const char* U_EXPORT2
1549b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queruudat_getLocaleByType(const UDateFormat *fmt,
1550b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru                     ULocDataLocaleType type,
15518de051c3d18a56cc126f0f44e368495a52f9148cFredrik Roubert                     UErrorCode* status);
1552b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
1553103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/**
155454dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Set a particular UDisplayContext value in the formatter, such as
155554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * UDISPCTX_CAPITALIZATION_FOR_STANDALONE.
155654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param fmt The formatter for which to set a UDisplayContext value.
155754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param value The UDisplayContext value to set.
1558103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param status A pointer to an UErrorCode to receive any errors
1559fceb39872958b9fa2505e63f8b8699a9e0f882f4ccornelius * @stable ICU 51
1560103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */
15618393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig CorneliusU_DRAFT void U_EXPORT2
156254dcd9b6a06071f647dac967e9e267abb9410720Craig Corneliusudat_setContext(UDateFormat* fmt, UDisplayContext value, UErrorCode* status);
1563103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius
1564103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/**
156554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * Get the formatter's UDisplayContext value for the specified UDisplayContextType,
156654dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * such as UDISPCTX_TYPE_CAPITALIZATION.
156754dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param fmt The formatter to query.
156854dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @param type The UDisplayContextType whose value to return
1569103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @param status A pointer to an UErrorCode to receive any errors
157054dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius * @return The UDisplayContextValue for the specified type.
15711b7d32f919554dda9c193b32188251337bc756f1Fredrik Roubert * @stable ICU 53
1572103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */
15731b7d32f919554dda9c193b32188251337bc756f1Fredrik RoubertU_STABLE UDisplayContext U_EXPORT2
1574fceb39872958b9fa2505e63f8b8699a9e0f882f4ccorneliusudat_getContext(const UDateFormat* fmt, UDisplayContextType type, UErrorCode* status);
157554dcd9b6a06071f647dac967e9e267abb9410720Craig Cornelius
1576103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius#ifndef U_HIDE_INTERNAL_API
1577b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru/**
1578b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* Extract the date pattern from a UDateFormat set for relative date formatting.
1579b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* The pattern will follow the pattern syntax rules.
1580b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* @param fmt The formatter to query.
1581b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* @param result A pointer to a buffer to receive the pattern.
1582b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* @param resultLength The maximum size of result.
1583b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* @param status A pointer to a UErrorCode to receive any errors
1584b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* @return The total buffer size needed; if greater than resultLength, the output was truncated.
1585b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* @see udat_applyPatternRelative
1586b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* @internal ICU 4.2 technology preview
1587b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru*/
15888de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_INTERNAL int32_t U_EXPORT2
1589b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queruudat_toPatternRelativeDate(const UDateFormat *fmt,
1590b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru                           UChar             *result,
1591b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru                           int32_t           resultLength,
1592b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru                           UErrorCode        *status);
1593b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
1594b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru/**
1595b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* Extract the time pattern from a UDateFormat set for relative date formatting.
1596b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* The pattern will follow the pattern syntax rules.
1597b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* @param fmt The formatter to query.
1598b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* @param result A pointer to a buffer to receive the pattern.
1599b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* @param resultLength The maximum size of result.
1600b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* @param status A pointer to a UErrorCode to receive any errors
1601b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* @return The total buffer size needed; if greater than resultLength, the output was truncated.
1602b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* @see udat_applyPatternRelative
1603b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* @internal ICU 4.2 technology preview
1604b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru*/
16058de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_INTERNAL int32_t U_EXPORT2
1606b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queruudat_toPatternRelativeTime(const UDateFormat *fmt,
1607b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru                           UChar             *result,
1608b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru                           int32_t           resultLength,
1609b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru                           UErrorCode        *status);
1610b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
1611b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru/**
1612b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* Set the date & time patterns used by a UDateFormat set for relative date formatting.
1613b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* The patterns should follow the pattern syntax rules.
1614b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* @param format The formatter to set.
1615b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* @param datePattern The new date pattern
1616b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* @param datePatternLength The length of datePattern, or -1 if null-terminated.
1617b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* @param timePattern The new time pattern
1618b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* @param timePatternLength The length of timePattern, or -1 if null-terminated.
1619b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* @param status A pointer to a UErrorCode to receive any errors
1620b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* @see udat_toPatternRelativeDate, udat_toPatternRelativeTime
1621b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru* @internal ICU 4.2 technology preview
1622b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru*/
16238de051c3d18a56cc126f0f44e368495a52f9148cFredrik RoubertU_INTERNAL void U_EXPORT2
1624b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queruudat_applyPatternRelative(UDateFormat *format,
1625b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru                          const UChar *datePattern,
1626b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru                          int32_t     datePatternLength,
1627b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru                          const UChar *timePattern,
1628b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru                          int32_t     timePatternLength,
1629b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru                          UErrorCode  *status);
1630103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius
1631103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/**
1632103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @internal
1633103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @see udat_open
1634103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */
1635103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliustypedef UDateFormat* (U_EXPORT2 *UDateFormatOpener) (UDateFormatStyle  timeStyle,
1636103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius                                                    UDateFormatStyle  dateStyle,
1637103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius                                                    const char        *locale,
1638103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius                                                    const UChar       *tzID,
1639103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius                                                    int32_t           tzIDLength,
1640103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius                                                    const UChar       *pattern,
1641103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius                                                    int32_t           patternLength,
1642103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius                                                    UErrorCode        *status);
1643103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius
1644103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/**
1645103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Register a provider factory
1646103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @internal ICU 49
1647103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */
1648103e9ffba2cba345d0078eb8b8db33249f81840aCraig CorneliusU_INTERNAL void U_EXPORT2
1649103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusudat_registerOpener(UDateFormatOpener opener, UErrorCode *status);
1650103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius
1651103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius/**
1652103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * Un-Register a provider factory
1653103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius * @internal ICU 49
1654103e9ffba2cba345d0078eb8b8db33249f81840aCraig Cornelius */
1655103e9ffba2cba345d0078eb8b8db33249f81840aCraig CorneliusU_INTERNAL UDateFormatOpener U_EXPORT2
1656103e9ffba2cba345d0078eb8b8db33249f81840aCraig Corneliusudat_unregisterOpener(UDateFormatOpener opener, UErrorCode *status);
16578393335b955da7340c9f19b1b4b2d6c0c2c04be7Craig Cornelius#endif  /* U_HIDE_INTERNAL_API */
1658b0ac937921a2c196d8b9da665135bf6ba01a1ccfJean-Baptiste Queru
165950294ead5e5d23f5bbfed76e00e6b510bd41eee1claireho
1660b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif /* #if !UCONFIG_NO_FORMATTING */
1661b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru
1662b13da9df870a61b11249bf741347908dbea0edd8Jean-Baptiste Queru#endif
1663