udat.h

Go to the documentation of this file.
00001 /*
00002  *******************************************************************************
00003  * Copyright (C) 1996-2012, International Business Machines
00004  * Corporation and others. All Rights Reserved.
00005  *******************************************************************************
00006 */
00007 
00008 #ifndef UDAT_H
00009 #define UDAT_H
00010 
00011 #include "unicode/utypes.h"
00012 
00013 #if !UCONFIG_NO_FORMATTING
00014 
00015 #include "unicode/localpointer.h"
00016 #include "unicode/ucal.h"
00017 #include "unicode/unum.h"
00018 #include "unicode/udisplaycontext.h"
00140 typedef void* UDateFormat;
00141 
00145 typedef enum UDateFormatStyle {
00147     UDAT_FULL,
00149     UDAT_LONG,
00151     UDAT_MEDIUM,
00153     UDAT_SHORT,
00155     UDAT_DEFAULT = UDAT_MEDIUM,
00156 
00158     UDAT_RELATIVE = (1 << 7),
00159     
00160     UDAT_FULL_RELATIVE = UDAT_FULL | UDAT_RELATIVE,
00161         
00162     UDAT_LONG_RELATIVE = UDAT_LONG | UDAT_RELATIVE,
00163     
00164     UDAT_MEDIUM_RELATIVE = UDAT_MEDIUM | UDAT_RELATIVE,
00165     
00166     UDAT_SHORT_RELATIVE = UDAT_SHORT | UDAT_RELATIVE,
00167     
00168     
00170     UDAT_NONE = -1,
00171 
00177     UDAT_PATTERN = -2,
00178 
00180     UDAT_IGNORE = UDAT_PATTERN
00181 } UDateFormatStyle;
00182 
00183 // Skeletons for dates.
00184 
00189 #define UDAT_YEAR                       "y"
00190 
00194 #define UDAT_QUARTER                    "QQQQ"
00195 
00199 #define UDAT_ABBR_QUARTER               "QQQ"
00200 
00204 #define UDAT_YEAR_QUARTER               "yQQQQ"
00205 
00209 #define UDAT_YEAR_ABBR_QUARTER          "yQQQ"
00210 
00214 #define UDAT_MONTH                      "MMMM"
00215 
00219 #define UDAT_ABBR_MONTH                 "MMM"
00220 
00224 #define UDAT_NUM_MONTH                  "M"
00225 
00229 #define UDAT_YEAR_MONTH                 "yMMMM"
00230 
00234 #define UDAT_YEAR_ABBR_MONTH            "yMMM"
00235 
00239 #define UDAT_YEAR_NUM_MONTH             "yM"
00240 
00244 #define UDAT_DAY                        "d"
00245 
00250 #define UDAT_YEAR_MONTH_DAY             "yMMMMd"
00251 
00256 #define UDAT_YEAR_ABBR_MONTH_DAY        "yMMMd"
00257 
00262 #define UDAT_YEAR_NUM_MONTH_DAY         "yMd"
00263 
00267 #define UDAT_WEEKDAY                    "EEEE"
00268 
00272 #define UDAT_ABBR_WEEKDAY               "E"
00273 
00278 #define UDAT_YEAR_MONTH_WEEKDAY_DAY     "yMMMMEEEEd"
00279 
00284 #define UDAT_YEAR_ABBR_MONTH_WEEKDAY_DAY "yMMMEd" 
00285 
00290 #define UDAT_YEAR_NUM_MONTH_WEEKDAY_DAY "yMEd"
00291 
00296 #define UDAT_MONTH_DAY                  "MMMMd"
00297 
00302 #define UDAT_ABBR_MONTH_DAY             "MMMd"
00303 
00308 #define UDAT_NUM_MONTH_DAY              "Md"
00309 
00314 #define UDAT_MONTH_WEEKDAY_DAY          "MMMMEEEEd"
00315 
00320 #define UDAT_ABBR_MONTH_WEEKDAY_DAY     "MMMEd"
00321 
00326 #define UDAT_NUM_MONTH_WEEKDAY_DAY      "MEd"
00327 
00328 // Skeletons for times.
00329 
00334 #define UDAT_HOUR                       "j"
00335 
00339 #define UDAT_HOUR24                     "H"
00340 
00344 #define UDAT_MINUTE                     "m"
00345 
00350 #define UDAT_HOUR_MINUTE                "jm"
00351 
00356 #define UDAT_HOUR24_MINUTE              "Hm"
00357 
00361 #define UDAT_SECOND                     "s"
00362 
00368 #define UDAT_HOUR_MINUTE_SECOND         "jms"
00369 
00375 #define UDAT_HOUR24_MINUTE_SECOND       "Hms"
00376 
00381 #define UDAT_MINUTE_SECOND              "ms"
00382 
00383 // Skeletons for time zones.
00384 
00392 #define UDAT_LOCATION_TZ "VVVV"
00393 
00400 #define UDAT_GENERIC_TZ "vvvv"
00401 
00408 #define UDAT_ABBR_GENERIC_TZ "v"
00409 
00416 #define UDAT_SPECIFIC_TZ "zzzz"
00417 
00424 #define UDAT_ABBR_SPECIFIC_TZ "z"
00425 
00432 #define UDAT_ABBR_UTC_TZ "ZZZZ"
00433 
00434 // deprecated skeleton constants
00435 
00440 #define UDAT_STANDALONE_MONTH           "LLLL"
00441 
00445 #define UDAT_ABBR_STANDALONE_MONTH      "LLL"
00446 
00451 #define UDAT_HOUR_MINUTE_GENERIC_TZ     "jmv"
00452 
00456 #define UDAT_HOUR_MINUTE_TZ             "jmz"
00457 
00461 #define UDAT_HOUR_GENERIC_TZ            "jv"
00462 
00466 #define UDAT_HOUR_TZ                    "jz"
00467 
00473 typedef enum UDateFormatField {
00479     UDAT_ERA_FIELD = 0,
00480 
00486     UDAT_YEAR_FIELD = 1,
00487 
00493     UDAT_MONTH_FIELD = 2,
00494 
00500     UDAT_DATE_FIELD = 3,
00501 
00509     UDAT_HOUR_OF_DAY1_FIELD = 4,
00510 
00518     UDAT_HOUR_OF_DAY0_FIELD = 5,
00519 
00525     UDAT_MINUTE_FIELD = 6,
00526 
00532     UDAT_SECOND_FIELD = 7,
00533 
00547     UDAT_FRACTIONAL_SECOND_FIELD = 8,
00548 
00554     UDAT_DAY_OF_WEEK_FIELD = 9,
00555 
00561     UDAT_DAY_OF_YEAR_FIELD = 10,
00562 
00568     UDAT_DAY_OF_WEEK_IN_MONTH_FIELD = 11,
00569 
00575     UDAT_WEEK_OF_YEAR_FIELD = 12,
00576 
00582     UDAT_WEEK_OF_MONTH_FIELD = 13,
00583 
00589     UDAT_AM_PM_FIELD = 14,
00590 
00598     UDAT_HOUR1_FIELD = 15,
00599 
00607     UDAT_HOUR0_FIELD = 16,
00608 
00615     UDAT_TIMEZONE_FIELD = 17,
00616 
00622     UDAT_YEAR_WOY_FIELD = 18,
00623 
00629     UDAT_DOW_LOCAL_FIELD = 19,
00630 
00636     UDAT_EXTENDED_YEAR_FIELD = 20,
00637 
00643     UDAT_JULIAN_DAY_FIELD = 21,
00644 
00650     UDAT_MILLISECONDS_IN_DAY_FIELD = 22,
00651 
00658     UDAT_TIMEZONE_RFC_FIELD = 23,
00659 
00665     UDAT_TIMEZONE_GENERIC_FIELD = 24,
00672     UDAT_STANDALONE_DAY_FIELD = 25,
00673 
00680     UDAT_STANDALONE_MONTH_FIELD = 26,
00681 
00689     UDAT_QUARTER_FIELD = 27,
00690 
00698     UDAT_STANDALONE_QUARTER_FIELD = 28,
00699 
00705     UDAT_TIMEZONE_SPECIAL_FIELD = 29,
00706 
00714     UDAT_YEAR_NAME_FIELD = 30,
00715 
00724     UDAT_FIELD_COUNT = 31
00725 
00726 } UDateFormatField;
00727 
00728 
00737 U_STABLE UCalendarDateFields U_EXPORT2
00738 udat_toCalendarDateField(UDateFormatField field);
00739 
00740 
00769 U_STABLE UDateFormat* U_EXPORT2 
00770 udat_open(UDateFormatStyle  timeStyle,
00771           UDateFormatStyle  dateStyle,
00772           const char        *locale,
00773           const UChar       *tzID,
00774           int32_t           tzIDLength,
00775           const UChar       *pattern,
00776           int32_t           patternLength,
00777           UErrorCode        *status);
00778 
00779 
00786 U_STABLE void U_EXPORT2 
00787 udat_close(UDateFormat* format);
00788 
00789 #if U_SHOW_CPLUSPLUS_API
00790 
00791 U_NAMESPACE_BEGIN
00792 
00802 U_DEFINE_LOCAL_OPEN_POINTER(LocalUDateFormatPointer, UDateFormat, udat_close);
00803 
00804 U_NAMESPACE_END
00805 
00806 #endif
00807 
00816 U_STABLE UDateFormat* U_EXPORT2 
00817 udat_clone(const UDateFormat *fmt,
00818        UErrorCode *status);
00819 
00838 U_STABLE int32_t U_EXPORT2 
00839 udat_format(    const    UDateFormat*    format,
00840                         UDate           dateToFormat,
00841                         UChar*          result,
00842                         int32_t         resultLength,
00843                         UFieldPosition* position,
00844                         UErrorCode*     status);
00845 
00871 U_STABLE UDate U_EXPORT2 
00872 udat_parse(const    UDateFormat*    format,
00873            const    UChar*          text,
00874                     int32_t         textLength,
00875                     int32_t         *parsePos,
00876                     UErrorCode      *status);
00877 
00899 U_STABLE void U_EXPORT2 
00900 udat_parseCalendar(const    UDateFormat*    format,
00901                             UCalendar*      calendar,
00902                    const    UChar*          text,
00903                             int32_t         textLength,
00904                             int32_t         *parsePos,
00905                             UErrorCode      *status);
00906 
00916 U_STABLE UBool U_EXPORT2 
00917 udat_isLenient(const UDateFormat* fmt);
00918 
00928 U_STABLE void U_EXPORT2 
00929 udat_setLenient(    UDateFormat*    fmt,
00930                     UBool          isLenient);
00931 
00941 U_STABLE const UCalendar* U_EXPORT2 
00942 udat_getCalendar(const UDateFormat* fmt);
00943 
00953 U_STABLE void U_EXPORT2 
00954 udat_setCalendar(            UDateFormat*    fmt,
00955                     const   UCalendar*      calendarToSet);
00956 
00966 U_STABLE const UNumberFormat* U_EXPORT2 
00967 udat_getNumberFormat(const UDateFormat* fmt);
00968 
00978 U_STABLE void U_EXPORT2 
00979 udat_setNumberFormat(            UDateFormat*    fmt,
00980                         const   UNumberFormat*  numberFormatToSet);
00981 
00991 U_STABLE const char* U_EXPORT2 
00992 udat_getAvailable(int32_t localeIndex);
00993 
01002 U_STABLE int32_t U_EXPORT2 
01003 udat_countAvailable(void);
01004 
01015 U_STABLE UDate U_EXPORT2 
01016 udat_get2DigitYearStart(    const   UDateFormat     *fmt,
01017                                     UErrorCode      *status);
01018 
01029 U_STABLE void U_EXPORT2 
01030 udat_set2DigitYearStart(    UDateFormat     *fmt,
01031                             UDate           d,
01032                             UErrorCode      *status);
01033 
01046 U_STABLE int32_t U_EXPORT2 
01047 udat_toPattern(    const   UDateFormat     *fmt,
01048                         UBool          localized,
01049                         UChar           *result,
01050                         int32_t         resultLength,
01051                         UErrorCode      *status);
01052 
01063 U_STABLE void U_EXPORT2 
01064 udat_applyPattern(            UDateFormat     *format,
01065                             UBool          localized,
01066                     const   UChar           *pattern,
01067                             int32_t         patternLength);
01068 
01073 typedef enum UDateFormatSymbolType {
01075     UDAT_ERAS,
01077     UDAT_MONTHS,
01079     UDAT_SHORT_MONTHS,
01081     UDAT_WEEKDAYS,
01083     UDAT_SHORT_WEEKDAYS,
01085     UDAT_AM_PMS,
01087     UDAT_LOCALIZED_CHARS,
01089     UDAT_ERA_NAMES,
01091     UDAT_NARROW_MONTHS,
01093     UDAT_NARROW_WEEKDAYS,
01095     UDAT_STANDALONE_MONTHS,
01096     UDAT_STANDALONE_SHORT_MONTHS,
01097     UDAT_STANDALONE_NARROW_MONTHS,
01099     UDAT_STANDALONE_WEEKDAYS,
01100     UDAT_STANDALONE_SHORT_WEEKDAYS,
01101     UDAT_STANDALONE_NARROW_WEEKDAYS,
01103     UDAT_QUARTERS,
01105     UDAT_SHORT_QUARTERS,
01107     UDAT_STANDALONE_QUARTERS,
01108     UDAT_STANDALONE_SHORT_QUARTERS
01109 
01110 } UDateFormatSymbolType;
01111 
01112 struct UDateFormatSymbols;
01117 typedef struct UDateFormatSymbols UDateFormatSymbols;
01118 
01135 U_STABLE int32_t U_EXPORT2 
01136 udat_getSymbols(const   UDateFormat             *fmt,
01137                         UDateFormatSymbolType   type,
01138                         int32_t                 symbolIndex,
01139                         UChar                   *result,
01140                         int32_t                 resultLength,
01141                         UErrorCode              *status);
01142 
01155 U_STABLE int32_t U_EXPORT2 
01156 udat_countSymbols(    const    UDateFormat                *fmt,
01157                             UDateFormatSymbolType    type);
01158 
01174 U_STABLE void U_EXPORT2 
01175 udat_setSymbols(    UDateFormat             *format,
01176                     UDateFormatSymbolType   type,
01177                     int32_t                 symbolIndex,
01178                     UChar                   *value,
01179                     int32_t                 valueLength,
01180                     UErrorCode              *status);
01181 
01191 U_STABLE const char* U_EXPORT2
01192 udat_getLocaleByType(const UDateFormat *fmt,
01193                      ULocDataLocaleType type,
01194                      UErrorCode* status); 
01195 
01196 #ifndef U_HIDE_INTERNAL_API
01197 
01205 U_INTERNAL void U_EXPORT2
01206 udat_setContext(UDateFormat* fmt, UDisplayContext value, UErrorCode* status);
01207 
01217 U_INTERNAL UDisplayContext U_EXPORT2
01218 udat_getContext(UDateFormat* fmt, UDisplayContextType type, UErrorCode* status);
01219 
01220 #endif  /* U_HIDE_INTERNAL_API */
01221 
01222 #ifndef U_HIDE_INTERNAL_API
01223 
01234 U_INTERNAL int32_t U_EXPORT2 
01235 udat_toPatternRelativeDate(const UDateFormat *fmt,
01236                            UChar             *result,
01237                            int32_t           resultLength,
01238                            UErrorCode        *status);
01239 
01251 U_INTERNAL int32_t U_EXPORT2 
01252 udat_toPatternRelativeTime(const UDateFormat *fmt,
01253                            UChar             *result,
01254                            int32_t           resultLength,
01255                            UErrorCode        *status);
01256 
01269 U_INTERNAL void U_EXPORT2 
01270 udat_applyPatternRelative(UDateFormat *format,
01271                           const UChar *datePattern,
01272                           int32_t     datePatternLength,
01273                           const UChar *timePattern,
01274                           int32_t     timePatternLength,
01275                           UErrorCode  *status);
01276 #endif  /* U_HIDE_INTERNAL_API */
01277 
01282 typedef UDateFormat* (U_EXPORT2 *UDateFormatOpener) (UDateFormatStyle  timeStyle,
01283                                                     UDateFormatStyle  dateStyle,
01284                                                     const char        *locale,
01285                                                     const UChar       *tzID,
01286                                                     int32_t           tzIDLength,
01287                                                     const UChar       *pattern,
01288                                                     int32_t           patternLength,
01289                                                     UErrorCode        *status);
01290 
01295 U_INTERNAL void U_EXPORT2
01296 udat_registerOpener(UDateFormatOpener opener, UErrorCode *status);
01297 
01302 U_INTERNAL UDateFormatOpener U_EXPORT2
01303 udat_unregisterOpener(UDateFormatOpener opener, UErrorCode *status);
01304 
01305 
01306 #endif /* #if !UCONFIG_NO_FORMATTING */
01307 
01308 #endif

Generated on 27 Oct 2013 for ICU 50.1.2 by  doxygen 1.4.7