ICU 4.8.1.1
4.8.1.1
|
00001 /* 00002 ******************************************************************************* 00003 * Copyright (C) 1996-2010, 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" 00139 typedef void* UDateFormat; 00140 00144 typedef enum UDateFormatStyle { 00146 UDAT_FULL, 00148 UDAT_LONG, 00150 UDAT_MEDIUM, 00152 UDAT_SHORT, 00154 UDAT_DEFAULT = UDAT_MEDIUM, 00155 00157 UDAT_RELATIVE = (1 << 7), 00158 00159 UDAT_FULL_RELATIVE = UDAT_FULL | UDAT_RELATIVE, 00160 00161 UDAT_LONG_RELATIVE = UDAT_LONG | UDAT_RELATIVE, 00162 00163 UDAT_MEDIUM_RELATIVE = UDAT_MEDIUM | UDAT_RELATIVE, 00164 00165 UDAT_SHORT_RELATIVE = UDAT_SHORT | UDAT_RELATIVE, 00166 00167 00169 UDAT_NONE = -1, 00171 UDAT_IGNORE = -2 00172 00173 } UDateFormatStyle; 00174 00175 00207 #define UDAT_MINUTE_SECOND "ms" 00208 #define UDAT_HOUR24_MINUTE "Hm" 00209 #define UDAT_HOUR24_MINUTE_SECOND "Hms" 00210 #define UDAT_HOUR_MINUTE_SECOND "hms" 00211 #define UDAT_STANDALONE_MONTH "LLLL" 00212 #define UDAT_ABBR_STANDALONE_MONTH "LLL" 00213 #define UDAT_YEAR_QUARTER "yQQQ" 00214 #define UDAT_YEAR_ABBR_QUARTER "yQ" 00215 00226 #define UDAT_HOUR_MINUTE "hm" 00227 #define UDAT_YEAR "y" 00228 #define UDAT_DAY "d" 00229 #define UDAT_NUM_MONTH_WEEKDAY_DAY "MEd" 00230 #define UDAT_YEAR_NUM_MONTH "yM" 00231 #define UDAT_NUM_MONTH_DAY "Md" 00232 #define UDAT_YEAR_NUM_MONTH_WEEKDAY_DAY "yMEd" 00233 #define UDAT_ABBR_MONTH_WEEKDAY_DAY "MMMEd" 00234 #define UDAT_YEAR_MONTH "yMMMM" 00235 #define UDAT_YEAR_ABBR_MONTH "yMMM" 00236 #define UDAT_MONTH_DAY "MMMMd" 00237 #define UDAT_ABBR_MONTH_DAY "MMMd" 00238 #define UDAT_MONTH_WEEKDAY_DAY "MMMMEEEEd" 00239 #define UDAT_YEAR_ABBR_MONTH_WEEKDAY_DAY "yMMMEd" 00240 #define UDAT_YEAR_MONTH_WEEKDAY_DAY "yMMMMEEEEd" 00241 #define UDAT_YEAR_MONTH_DAY "yMMMMd" 00242 #define UDAT_YEAR_ABBR_MONTH_DAY "yMMMd" 00243 #define UDAT_YEAR_NUM_MONTH_DAY "yMd" 00244 #define UDAT_NUM_MONTH "M" 00245 #define UDAT_ABBR_MONTH "MMM" 00246 #define UDAT_MONTH "MMMM" 00247 #define UDAT_HOUR_MINUTE_GENERIC_TZ "hmv" 00248 #define UDAT_HOUR_MINUTE_TZ "hmz" 00249 #define UDAT_HOUR "h" 00250 #define UDAT_HOUR_GENERIC_TZ "hv" 00251 #define UDAT_HOUR_TZ "hz" 00252 00261 typedef enum UDateFormatField { 00267 UDAT_ERA_FIELD = 0, 00268 00274 UDAT_YEAR_FIELD = 1, 00275 00281 UDAT_MONTH_FIELD = 2, 00282 00288 UDAT_DATE_FIELD = 3, 00289 00297 UDAT_HOUR_OF_DAY1_FIELD = 4, 00298 00306 UDAT_HOUR_OF_DAY0_FIELD = 5, 00307 00313 UDAT_MINUTE_FIELD = 6, 00314 00320 UDAT_SECOND_FIELD = 7, 00321 00327 UDAT_FRACTIONAL_SECOND_FIELD = 8, 00328 00334 UDAT_DAY_OF_WEEK_FIELD = 9, 00335 00341 UDAT_DAY_OF_YEAR_FIELD = 10, 00342 00348 UDAT_DAY_OF_WEEK_IN_MONTH_FIELD = 11, 00349 00355 UDAT_WEEK_OF_YEAR_FIELD = 12, 00356 00362 UDAT_WEEK_OF_MONTH_FIELD = 13, 00363 00369 UDAT_AM_PM_FIELD = 14, 00370 00378 UDAT_HOUR1_FIELD = 15, 00379 00387 UDAT_HOUR0_FIELD = 16, 00388 00395 UDAT_TIMEZONE_FIELD = 17, 00396 00402 UDAT_YEAR_WOY_FIELD = 18, 00403 00409 UDAT_DOW_LOCAL_FIELD = 19, 00410 00416 UDAT_EXTENDED_YEAR_FIELD = 20, 00417 00423 UDAT_JULIAN_DAY_FIELD = 21, 00424 00430 UDAT_MILLISECONDS_IN_DAY_FIELD = 22, 00431 00438 UDAT_TIMEZONE_RFC_FIELD = 23, 00439 00445 UDAT_TIMEZONE_GENERIC_FIELD = 24, 00452 UDAT_STANDALONE_DAY_FIELD = 25, 00453 00460 UDAT_STANDALONE_MONTH_FIELD = 26, 00461 00469 UDAT_QUARTER_FIELD = 27, 00470 00478 UDAT_STANDALONE_QUARTER_FIELD = 28, 00479 00485 UDAT_TIMEZONE_SPECIAL_FIELD = 29, 00486 00495 UDAT_FIELD_COUNT = 30 00496 00497 } UDateFormatField; 00498 00499 00508 U_STABLE UCalendarDateFields U_EXPORT2 00509 udat_toCalendarDateField(UDateFormatField field); 00510 00511 00533 U_STABLE UDateFormat* U_EXPORT2 00534 udat_open(UDateFormatStyle timeStyle, 00535 UDateFormatStyle dateStyle, 00536 const char *locale, 00537 const UChar *tzID, 00538 int32_t tzIDLength, 00539 const UChar *pattern, 00540 int32_t patternLength, 00541 UErrorCode *status); 00542 00543 00550 U_STABLE void U_EXPORT2 00551 udat_close(UDateFormat* format); 00552 00553 #if U_SHOW_CPLUSPLUS_API 00554 00555 U_NAMESPACE_BEGIN 00556 00566 U_DEFINE_LOCAL_OPEN_POINTER(LocalUDateFormatPointer, UDateFormat, udat_close); 00567 00568 U_NAMESPACE_END 00569 00570 #endif 00571 00580 U_STABLE UDateFormat* U_EXPORT2 00581 udat_clone(const UDateFormat *fmt, 00582 UErrorCode *status); 00583 00602 U_STABLE int32_t U_EXPORT2 00603 udat_format( const UDateFormat* format, 00604 UDate dateToFormat, 00605 UChar* result, 00606 int32_t resultLength, 00607 UFieldPosition* position, 00608 UErrorCode* status); 00609 00623 U_STABLE UDate U_EXPORT2 00624 udat_parse( const UDateFormat* format, 00625 const UChar* text, 00626 int32_t textLength, 00627 int32_t *parsePos, 00628 UErrorCode *status); 00629 00643 U_STABLE void U_EXPORT2 00644 udat_parseCalendar(const UDateFormat* format, 00645 UCalendar* calendar, 00646 const UChar* text, 00647 int32_t textLength, 00648 int32_t *parsePos, 00649 UErrorCode *status); 00650 00660 U_STABLE UBool U_EXPORT2 00661 udat_isLenient(const UDateFormat* fmt); 00662 00672 U_STABLE void U_EXPORT2 00673 udat_setLenient( UDateFormat* fmt, 00674 UBool isLenient); 00675 00685 U_STABLE const UCalendar* U_EXPORT2 00686 udat_getCalendar(const UDateFormat* fmt); 00687 00697 U_STABLE void U_EXPORT2 00698 udat_setCalendar( UDateFormat* fmt, 00699 const UCalendar* calendarToSet); 00700 00710 U_STABLE const UNumberFormat* U_EXPORT2 00711 udat_getNumberFormat(const UDateFormat* fmt); 00712 00722 U_STABLE void U_EXPORT2 00723 udat_setNumberFormat( UDateFormat* fmt, 00724 const UNumberFormat* numberFormatToSet); 00725 00735 U_STABLE const char* U_EXPORT2 00736 udat_getAvailable(int32_t localeIndex); 00737 00746 U_STABLE int32_t U_EXPORT2 00747 udat_countAvailable(void); 00748 00759 U_STABLE UDate U_EXPORT2 00760 udat_get2DigitYearStart( const UDateFormat *fmt, 00761 UErrorCode *status); 00762 00773 U_STABLE void U_EXPORT2 00774 udat_set2DigitYearStart( UDateFormat *fmt, 00775 UDate d, 00776 UErrorCode *status); 00777 00790 U_STABLE int32_t U_EXPORT2 00791 udat_toPattern( const UDateFormat *fmt, 00792 UBool localized, 00793 UChar *result, 00794 int32_t resultLength, 00795 UErrorCode *status); 00796 00807 U_STABLE void U_EXPORT2 00808 udat_applyPattern( UDateFormat *format, 00809 UBool localized, 00810 const UChar *pattern, 00811 int32_t patternLength); 00812 00817 typedef enum UDateFormatSymbolType { 00819 UDAT_ERAS, 00821 UDAT_MONTHS, 00823 UDAT_SHORT_MONTHS, 00825 UDAT_WEEKDAYS, 00827 UDAT_SHORT_WEEKDAYS, 00829 UDAT_AM_PMS, 00831 UDAT_LOCALIZED_CHARS, 00833 UDAT_ERA_NAMES, 00835 UDAT_NARROW_MONTHS, 00837 UDAT_NARROW_WEEKDAYS, 00839 UDAT_STANDALONE_MONTHS, 00840 UDAT_STANDALONE_SHORT_MONTHS, 00841 UDAT_STANDALONE_NARROW_MONTHS, 00843 UDAT_STANDALONE_WEEKDAYS, 00844 UDAT_STANDALONE_SHORT_WEEKDAYS, 00845 UDAT_STANDALONE_NARROW_WEEKDAYS, 00847 UDAT_QUARTERS, 00849 UDAT_SHORT_QUARTERS, 00851 UDAT_STANDALONE_QUARTERS, 00852 UDAT_STANDALONE_SHORT_QUARTERS 00853 00854 } UDateFormatSymbolType; 00855 00856 struct UDateFormatSymbols; 00861 typedef struct UDateFormatSymbols UDateFormatSymbols; 00862 00879 U_STABLE int32_t U_EXPORT2 00880 udat_getSymbols(const UDateFormat *fmt, 00881 UDateFormatSymbolType type, 00882 int32_t symbolIndex, 00883 UChar *result, 00884 int32_t resultLength, 00885 UErrorCode *status); 00886 00899 U_STABLE int32_t U_EXPORT2 00900 udat_countSymbols( const UDateFormat *fmt, 00901 UDateFormatSymbolType type); 00902 00918 U_STABLE void U_EXPORT2 00919 udat_setSymbols( UDateFormat *format, 00920 UDateFormatSymbolType type, 00921 int32_t symbolIndex, 00922 UChar *value, 00923 int32_t valueLength, 00924 UErrorCode *status); 00925 00935 U_STABLE const char* U_EXPORT2 00936 udat_getLocaleByType(const UDateFormat *fmt, 00937 ULocDataLocaleType type, 00938 UErrorCode* status); 00939 00951 U_INTERNAL int32_t U_EXPORT2 00952 udat_toPatternRelativeDate(const UDateFormat *fmt, 00953 UChar *result, 00954 int32_t resultLength, 00955 UErrorCode *status); 00956 00968 U_INTERNAL int32_t U_EXPORT2 00969 udat_toPatternRelativeTime(const UDateFormat *fmt, 00970 UChar *result, 00971 int32_t resultLength, 00972 UErrorCode *status); 00973 00986 U_INTERNAL void U_EXPORT2 00987 udat_applyPatternRelative(UDateFormat *format, 00988 const UChar *datePattern, 00989 int32_t datePatternLength, 00990 const UChar *timePattern, 00991 int32_t timePatternLength, 00992 UErrorCode *status); 00993 00994 00995 #endif /* #if !UCONFIG_NO_FORMATTING */ 00996 00997 #endif