00001
00002
00003
00004
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/ucal.h"
00016 #include "unicode/unum.h"
00138 typedef void* UDateFormat;
00139
00143 typedef enum UDateFormatStyle {
00145 UDAT_FULL,
00147 UDAT_LONG,
00149 UDAT_MEDIUM,
00151 UDAT_SHORT,
00153 UDAT_DEFAULT = UDAT_MEDIUM,
00154
00156 UDAT_RELATIVE = (1 << 7),
00157
00158 UDAT_FULL_RELATIVE = UDAT_FULL | UDAT_RELATIVE,
00159
00160 UDAT_LONG_RELATIVE = UDAT_LONG | UDAT_RELATIVE,
00161
00162 UDAT_MEDIUM_RELATIVE = UDAT_MEDIUM | UDAT_RELATIVE,
00163
00164 UDAT_SHORT_RELATIVE = UDAT_SHORT | UDAT_RELATIVE,
00165
00166
00168 UDAT_NONE = -1,
00170 UDAT_IGNORE = -2
00171
00172 } UDateFormatStyle;
00173
00174
00205 #define UDAT_MINUTE_SECOND "ms"
00206 #define UDAT_HOUR24_MINUTE "Hm"
00207 #define UDAT_HOUR24_MINUTE_SECOND "Hms"
00208 #define UDAT_HOUR_MINUTE_SECOND "hms"
00209 #define UDAT_STANDALONE_MONTH "LLLL"
00210 #define UDAT_ABBR_STANDALONE_MONTH "LLL"
00211 #define UDAT_YEAR_QUARTER "yQQQ"
00212 #define UDAT_YEAR_ABBR_QUARTER "yQ"
00213
00219 #define UDAT_HOUR_MINUTE "hm"
00220 #define UDAT_YEAR "y"
00221 #define UDAT_DAY "d"
00222 #define UDAT_NUM_MONTH_WEEKDAY_DAY "MEd"
00223 #define UDAT_YEAR_NUM_MONTH "yM"
00224 #define UDAT_NUM_MONTH_DAY "Md"
00225 #define UDAT_YEAR_NUM_MONTH_WEEKDAY_DAY "yMEd"
00226 #define UDAT_ABBR_MONTH_WEEKDAY_DAY "MMMEd"
00227 #define UDAT_YEAR_MONTH "yMMMM"
00228 #define UDAT_YEAR_ABBR_MONTH "yMMM"
00229 #define UDAT_MONTH_DAY "MMMMd"
00230 #define UDAT_ABBR_MONTH_DAY "MMMd"
00231 #define UDAT_MONTH_WEEKDAY_DAY "MMMMEEEEd"
00232 #define UDAT_YEAR_ABBR_MONTH_WEEKDAY_DAY "yMMMEd"
00233 #define UDAT_YEAR_MONTH_WEEKDAY_DAY "yMMMMEEEEd"
00234 #define UDAT_YEAR_MONTH_DAY "yMMMMd"
00235 #define UDAT_YEAR_ABBR_MONTH_DAY "yMMMd"
00236 #define UDAT_YEAR_NUM_MONTH_DAY "yMd"
00237 #define UDAT_NUM_MONTH "M"
00238 #define UDAT_ABBR_MONTH "MMM"
00239 #define UDAT_MONTH "MMMM"
00240 #define UDAT_HOUR_MINUTE_GENERIC_TZ "hmv"
00241 #define UDAT_HOUR_MINUTE_TZ "hmz"
00242 #define UDAT_HOUR "h"
00243 #define UDAT_HOUR_GENERIC_TZ "hv"
00244 #define UDAT_HOUR_TZ "hz"
00245
00246
00252 typedef enum UDateFormatField {
00258 UDAT_ERA_FIELD = 0,
00259
00265 UDAT_YEAR_FIELD = 1,
00266
00272 UDAT_MONTH_FIELD = 2,
00273
00279 UDAT_DATE_FIELD = 3,
00280
00288 UDAT_HOUR_OF_DAY1_FIELD = 4,
00289
00297 UDAT_HOUR_OF_DAY0_FIELD = 5,
00298
00304 UDAT_MINUTE_FIELD = 6,
00305
00311 UDAT_SECOND_FIELD = 7,
00312
00318 UDAT_FRACTIONAL_SECOND_FIELD = 8,
00319
00325 UDAT_DAY_OF_WEEK_FIELD = 9,
00326
00332 UDAT_DAY_OF_YEAR_FIELD = 10,
00333
00339 UDAT_DAY_OF_WEEK_IN_MONTH_FIELD = 11,
00340
00346 UDAT_WEEK_OF_YEAR_FIELD = 12,
00347
00353 UDAT_WEEK_OF_MONTH_FIELD = 13,
00354
00360 UDAT_AM_PM_FIELD = 14,
00361
00369 UDAT_HOUR1_FIELD = 15,
00370
00378 UDAT_HOUR0_FIELD = 16,
00379
00386 UDAT_TIMEZONE_FIELD = 17,
00387
00393 UDAT_YEAR_WOY_FIELD = 18,
00394
00400 UDAT_DOW_LOCAL_FIELD = 19,
00401
00407 UDAT_EXTENDED_YEAR_FIELD = 20,
00408
00414 UDAT_JULIAN_DAY_FIELD = 21,
00415
00421 UDAT_MILLISECONDS_IN_DAY_FIELD = 22,
00422
00429 UDAT_TIMEZONE_RFC_FIELD = 23,
00430
00436 UDAT_TIMEZONE_GENERIC_FIELD = 24,
00443 UDAT_STANDALONE_DAY_FIELD = 25,
00444
00451 UDAT_STANDALONE_MONTH_FIELD = 26,
00452
00460 UDAT_QUARTER_FIELD = 27,
00461
00469 UDAT_STANDALONE_QUARTER_FIELD = 28,
00470
00476 UDAT_TIMEZONE_SPECIAL_FIELD = 29,
00477
00486 UDAT_FIELD_COUNT = 30
00487
00488 } UDateFormatField;
00489
00509 U_STABLE UDateFormat* U_EXPORT2
00510 udat_open(UDateFormatStyle timeStyle,
00511 UDateFormatStyle dateStyle,
00512 const char *locale,
00513 const UChar *tzID,
00514 int32_t tzIDLength,
00515 const UChar *pattern,
00516 int32_t patternLength,
00517 UErrorCode *status);
00518
00519
00526 U_STABLE void U_EXPORT2
00527 udat_close(UDateFormat* format);
00528
00537 U_STABLE UDateFormat* U_EXPORT2
00538 udat_clone(const UDateFormat *fmt,
00539 UErrorCode *status);
00540
00559 U_STABLE int32_t U_EXPORT2
00560 udat_format( const UDateFormat* format,
00561 UDate dateToFormat,
00562 UChar* result,
00563 int32_t resultLength,
00564 UFieldPosition* position,
00565 UErrorCode* status);
00566
00580 U_STABLE UDate U_EXPORT2
00581 udat_parse( const UDateFormat* format,
00582 const UChar* text,
00583 int32_t textLength,
00584 int32_t *parsePos,
00585 UErrorCode *status);
00586
00600 U_STABLE void U_EXPORT2
00601 udat_parseCalendar(const UDateFormat* format,
00602 UCalendar* calendar,
00603 const UChar* text,
00604 int32_t textLength,
00605 int32_t *parsePos,
00606 UErrorCode *status);
00607
00617 U_STABLE UBool U_EXPORT2
00618 udat_isLenient(const UDateFormat* fmt);
00619
00629 U_STABLE void U_EXPORT2
00630 udat_setLenient( UDateFormat* fmt,
00631 UBool isLenient);
00632
00642 U_STABLE const UCalendar* U_EXPORT2
00643 udat_getCalendar(const UDateFormat* fmt);
00644
00654 U_STABLE void U_EXPORT2
00655 udat_setCalendar( UDateFormat* fmt,
00656 const UCalendar* calendarToSet);
00657
00667 U_STABLE const UNumberFormat* U_EXPORT2
00668 udat_getNumberFormat(const UDateFormat* fmt);
00669
00679 U_STABLE void U_EXPORT2
00680 udat_setNumberFormat( UDateFormat* fmt,
00681 const UNumberFormat* numberFormatToSet);
00682
00692 U_STABLE const char* U_EXPORT2
00693 udat_getAvailable(int32_t index);
00694
00703 U_STABLE int32_t U_EXPORT2
00704 udat_countAvailable(void);
00705
00716 U_STABLE UDate U_EXPORT2
00717 udat_get2DigitYearStart( const UDateFormat *fmt,
00718 UErrorCode *status);
00719
00730 U_STABLE void U_EXPORT2
00731 udat_set2DigitYearStart( UDateFormat *fmt,
00732 UDate d,
00733 UErrorCode *status);
00734
00747 U_STABLE int32_t U_EXPORT2
00748 udat_toPattern( const UDateFormat *fmt,
00749 UBool localized,
00750 UChar *result,
00751 int32_t resultLength,
00752 UErrorCode *status);
00753
00764 U_STABLE void U_EXPORT2
00765 udat_applyPattern( UDateFormat *format,
00766 UBool localized,
00767 const UChar *pattern,
00768 int32_t patternLength);
00769
00774 typedef enum UDateFormatSymbolType {
00776 UDAT_ERAS,
00778 UDAT_MONTHS,
00780 UDAT_SHORT_MONTHS,
00782 UDAT_WEEKDAYS,
00784 UDAT_SHORT_WEEKDAYS,
00786 UDAT_AM_PMS,
00788 UDAT_LOCALIZED_CHARS,
00790 UDAT_ERA_NAMES,
00792 UDAT_NARROW_MONTHS,
00794 UDAT_NARROW_WEEKDAYS,
00796 UDAT_STANDALONE_MONTHS,
00797 UDAT_STANDALONE_SHORT_MONTHS,
00798 UDAT_STANDALONE_NARROW_MONTHS,
00800 UDAT_STANDALONE_WEEKDAYS,
00801 UDAT_STANDALONE_SHORT_WEEKDAYS,
00802 UDAT_STANDALONE_NARROW_WEEKDAYS,
00804 UDAT_QUARTERS,
00806 UDAT_SHORT_QUARTERS,
00808 UDAT_STANDALONE_QUARTERS,
00809 UDAT_STANDALONE_SHORT_QUARTERS
00810
00811 } UDateFormatSymbolType;
00812
00813 struct UDateFormatSymbols;
00818 typedef struct UDateFormatSymbols UDateFormatSymbols;
00819
00836 U_STABLE int32_t U_EXPORT2
00837 udat_getSymbols(const UDateFormat *fmt,
00838 UDateFormatSymbolType type,
00839 int32_t index,
00840 UChar *result,
00841 int32_t resultLength,
00842 UErrorCode *status);
00843
00856 U_STABLE int32_t U_EXPORT2
00857 udat_countSymbols( const UDateFormat *fmt,
00858 UDateFormatSymbolType type);
00859
00875 U_STABLE void U_EXPORT2
00876 udat_setSymbols( UDateFormat *format,
00877 UDateFormatSymbolType type,
00878 int32_t index,
00879 UChar *value,
00880 int32_t valueLength,
00881 UErrorCode *status);
00882
00892 U_STABLE const char* U_EXPORT2
00893 udat_getLocaleByType(const UDateFormat *fmt,
00894 ULocDataLocaleType type,
00895 UErrorCode* status);
00896
00897 #endif
00898
00899 #endif