ICU-3391 move FieldPosition selectors to udat

X-SVN-Rev: 14679
This commit is contained in:
Alan Liu 2004-03-11 13:59:09 +00:00
parent f46fc3c62b
commit 685ba04d7a
2 changed files with 86 additions and 99 deletions

View File

@ -23,6 +23,7 @@
#if !UCONFIG_NO_FORMATTING
#include "unicode/udat.h"
#include "unicode/calendar.h"
#include "unicode/numfmt.h"
#include "unicode/format.h"
@ -126,76 +127,6 @@ class TimeZone;
*/
class U_I18N_API DateFormat : public Format {
public:
/**
* The following enum values are used in FieldPosition with date/time formatting.
* They are also used to index into DateFormatSymbols::fgPatternChars, which
* is the list of standard internal-representation pattern characters, and
* the resource bundle localPatternChars data. For this reason, this enum
* should be treated with care; don't change the order or contents of it
* unless you really know what you are doing. You'll probably have to change
* the code in DateFormatSymbols, SimpleDateFormat, and all the locale
* resource bundle data files.
* @draft ICU 2.4
*/
enum EField
{
kEraField = 0, // ERA field alignment.
kYearField, // YEAR field alignment.
kMonthField, // MONTH field alignment.
kDateField, // DATE field alignment.
kHourOfDay1Field, // One-based HOUR_OF_DAY field alignment.
// kHourOfDay1Field is used for the one-based 24-hour clock.
// For example, 23:59 + 01:00 results in 24:59.
kHourOfDay0Field, // Zero-based HOUR_OF_DAY field alignment.
// HOUR_OF_DAY0_FIELD is used for the zero-based 24-hour clock.
// For example, 23:59 + 01:00 results in 00:59.
kMinuteField, // MINUTE field alignment.
kSecondField, // SECOND field alignment.
kMillisecondField, // MILLISECOND field alignment.
kDayOfWeekField, // DAY_OF_WEEK field alignment.
kDayOfYearField, // DAY_OF_YEAR field alignment.
kDayOfWeekInMonthField,// DAY_OF_WEEK_IN_MONTH field alignment.
kWeekOfYearField, // WEEK_OF_YEAR field alignment.
kWeekOfMonthField, // WEEK_OF_MONTH field alignment.
kAmPmField, // AM_PM field alignment.
kHour1Field, // One-based HOUR field alignment.
// HOUR1_FIELD is used for the one-based 12-hour clock.
// For example, 11:30 PM + 1 hour results in 12:30 AM.
kHour0Field, // Zero-based HOUR field alignment.
// HOUR0_FIELD is used for the zero-based 12-hour clock.
// For example, 11:30 PM + 1 hour results in 00:30 AM.
kTimezoneField, // TIMEZONE field alignment.
kYearWOYField, // Corrected year for week representation
kDOWLocalField, // localized day of week
kExtendedYearField,
kJulianDayField,
kMillisecondsInDayField,
/**
* These constants are provided for backwards compatibility only.
* Please use the C++ style constants defined above.
*/
ERA_FIELD = kEraField,
YEAR_FIELD = kYearField,
MONTH_FIELD = kMonthField,
DATE_FIELD = kDateField,
HOUR_OF_DAY1_FIELD = kHourOfDay1Field,
HOUR_OF_DAY0_FIELD = kHourOfDay0Field,
MINUTE_FIELD = kMinuteField,
SECOND_FIELD = kSecondField,
MILLISECOND_FIELD = kMillisecondField,
DAY_OF_WEEK_FIELD = kDayOfWeekField,
DAY_OF_YEAR_FIELD = kDayOfYearField,
DAY_OF_WEEK_IN_MONTH_FIELD = kDayOfWeekInMonthField,
WEEK_OF_YEAR_FIELD = kWeekOfYearField,
WEEK_OF_MONTH_FIELD = kWeekOfMonthField,
AM_PM_FIELD = kAmPmField,
HOUR1_FIELD = kHour1Field,
HOUR0_FIELD = kHour0Field,
TIMEZONE_FIELD = kTimezoneField
};
/**
* Constants for various style patterns. These reflect the order of items in
@ -279,7 +210,7 @@ public:
* in with the text offsets for that field.
* <P> For example, given a time text
* "1996.07.10 AD at 15:08:56 PDT", if the given fieldPosition.field is
* DateFormat::kYearField, the offsets fieldPosition.beginIndex and
* UDAT_YEAR_FIELD, the offsets fieldPosition.beginIndex and
* statfieldPositionus.getEndIndex will be set to 0 and 4, respectively.
* <P> Notice
* that if the same time field appears more than once in a pattern, the status will
@ -311,7 +242,7 @@ public:
* in with the text offsets for that field.
* <P> For example, given a time text
* "1996.07.10 AD at 15:08:56 PDT", if the given fieldPosition.field is
* DateFormat::kYearField, the offsets fieldPosition.beginIndex and
* UDAT_YEAR_FIELD, the offsets fieldPosition.beginIndex and
* statfieldPositionus.getEndIndex will be set to 0 and 4, respectively.
* <P> Notice
* that if the same time field appears more than once in a pattern, the status will
@ -649,6 +580,60 @@ private:
* @return a date/time formatter, or 0 on failure.
*/
static DateFormat* create(EStyle timeStyle, EStyle dateStyle, const Locale&);
public:
/**
* Field selector for FieldPosition for DateFormat fields.
* @obsolete ICU 3.4 use UDateFormatField instead, since this API will be
* removed in that release
*/
enum EField
{
// Obsolete; use UDateFormatField instead
kEraField = UDAT_ERA_FIELD,
kYearField = UDAT_YEAR_FIELD,
kMonthField = UDAT_MONTH_FIELD,
kDateField = UDAT_DATE_FIELD,
kHourOfDay1Field = UDAT_HOUR_OF_DAY1_FIELD,
kHourOfDay0Field = UDAT_HOUR_OF_DAY0_FIELD,
kMinuteField = UDAT_MINUTE_FIELD,
kSecondField = UDAT_SECOND_FIELD,
kMillisecondField = UDAT_FRACTIONAL_SECOND_FIELD,
kDayOfWeekField = UDAT_DAY_OF_WEEK_FIELD,
kDayOfYearField = UDAT_DAY_OF_YEAR_FIELD,
kDayOfWeekInMonthField = UDAT_DAY_OF_WEEK_IN_MONTH_FIELD,
kWeekOfYearField = UDAT_WEEK_OF_YEAR_FIELD,
kWeekOfMonthField = UDAT_WEEK_OF_MONTH_FIELD,
kAmPmField = UDAT_AM_PM_FIELD,
kHour1Field = UDAT_HOUR1_FIELD,
kHour0Field = UDAT_HOUR0_FIELD,
kTimezoneField = UDAT_TIMEZONE_FIELD,
kYearWOYField = UDAT_YEAR_WOY_FIELD,
kDOWLocalField = UDAT_DOW_LOCAL_FIELD,
kExtendedYearField = UDAT_EXTENDED_YEAR_FIELD,
kJulianDayField = UDAT_JULIAN_DAY_FIELD,
kMillisecondsInDayField = UDAT_MILLISECONDS_IN_DAY_FIELD,
// Obsolete; use UDateFormatField instead
ERA_FIELD = UDAT_ERA_FIELD,
YEAR_FIELD = UDAT_YEAR_FIELD,
MONTH_FIELD = UDAT_MONTH_FIELD,
DATE_FIELD = UDAT_DATE_FIELD,
HOUR_OF_DAY1_FIELD = UDAT_HOUR_OF_DAY1_FIELD,
HOUR_OF_DAY0_FIELD = UDAT_HOUR_OF_DAY0_FIELD,
MINUTE_FIELD = UDAT_MINUTE_FIELD,
SECOND_FIELD = UDAT_SECOND_FIELD,
MILLISECOND_FIELD = UDAT_FRACTIONAL_SECOND_FIELD,
DAY_OF_WEEK_FIELD = UDAT_DAY_OF_WEEK_FIELD,
DAY_OF_YEAR_FIELD = UDAT_DAY_OF_YEAR_FIELD,
DAY_OF_WEEK_IN_MONTH_FIELD = UDAT_DAY_OF_WEEK_IN_MONTH_FIELD,
WEEK_OF_YEAR_FIELD = UDAT_WEEK_OF_YEAR_FIELD,
WEEK_OF_MONTH_FIELD = UDAT_WEEK_OF_MONTH_FIELD,
AM_PM_FIELD = UDAT_AM_PM_FIELD,
HOUR1_FIELD = UDAT_HOUR1_FIELD,
HOUR0_FIELD = UDAT_HOUR0_FIELD,
TIMEZONE_FIELD = UDAT_TIMEZONE_FIELD
};
};
inline UnicodeString&

View File

@ -158,40 +158,41 @@ typedef enum UDateFormatStyle {
} UDateFormatStyle;
/**
* UFieldPosition selectors for format fields defined by UDateFormat.
* FieldPosition and UFieldPosition selectors for format fields
* defined by DateFormat and UDateFormat.
* @draft ICU 3.0
*/
typedef enum UDateFormatField {
/**
* UFieldPosition selector for 'G' field alignment,
* FieldPosition and UFieldPosition selector for 'G' field alignment,
* corresponding to the UCAL_ERA field.
* @draft ICU 3.0
*/
UDAT_ERA_FIELD = 0,
/**
* UFieldPosition selector for 'y' field alignment,
* FieldPosition and UFieldPosition selector for 'y' field alignment,
* corresponding to the UCAL_YEAR field.
* @draft ICU 3.0
*/
UDAT_YEAR_FIELD = 1,
/**
* UFieldPosition selector for 'M' field alignment,
* FieldPosition and UFieldPosition selector for 'M' field alignment,
* corresponding to the UCAL_MONTH field.
* @draft ICU 3.0
*/
UDAT_MONTH_FIELD = 2,
/**
* UFieldPosition selector for 'd' field alignment,
* FieldPosition and UFieldPosition selector for 'd' field alignment,
* corresponding to the UCAL_DATE field.
* @draft ICU 3.0
*/
UDAT_DATE_FIELD = 3,
/**
* UFieldPosition selector for 'k' field alignment,
* FieldPosition and UFieldPosition selector for 'k' field alignment,
* corresponding to the UCAL_HOUR_OF_DAY field.
* UDAT_HOUR_OF_DAY1_FIELD is used for the one-based 24-hour clock.
* For example, 23:59 + 01:00 results in 24:59.
@ -200,7 +201,7 @@ typedef enum UDateFormatField {
UDAT_HOUR_OF_DAY1_FIELD = 4,
/**
* UFieldPosition selector for 'H' field alignment,
* FieldPosition and UFieldPosition selector for 'H' field alignment,
* corresponding to the UCAL_HOUR_OF_DAY field.
* UDAT_HOUR_OF_DAY0_FIELD is used for the zero-based 24-hour clock.
* For example, 23:59 + 01:00 results in 00:59.
@ -209,70 +210,70 @@ typedef enum UDateFormatField {
UDAT_HOUR_OF_DAY0_FIELD = 5,
/**
* UFieldPosition selector for 'm' field alignment,
* FieldPosition and UFieldPosition selector for 'm' field alignment,
* corresponding to the UCAL_MINUTE field.
* @draft ICU 3.0
*/
UDAT_MINUTE_FIELD = 6,
/**
* UFieldPosition selector for 's' field alignment,
* FieldPosition and UFieldPosition selector for 's' field alignment,
* corresponding to the UCAL_SECOND field.
* @draft ICU 3.0
*/
UDAT_SECOND_FIELD = 7,
/**
* UFieldPosition selector for 'S' field alignment,
* FieldPosition and UFieldPosition selector for 'S' field alignment,
* corresponding to the UCAL_MILLISECOND field.
* @draft ICU 3.0
*/
UDAT_MILLISECOND_FIELD = 8,
UDAT_FRACTIONAL_SECOND_FIELD = 8,
/**
* UFieldPosition selector for 'E' field alignment,
* FieldPosition and UFieldPosition selector for 'E' field alignment,
* corresponding to the UCAL_DAY_OF_WEEK field.
* @draft ICU 3.0
*/
UDAT_DAY_OF_WEEK_FIELD = 9,
/**
* UFieldPosition selector for 'D' field alignment,
* FieldPosition and UFieldPosition selector for 'D' field alignment,
* corresponding to the UCAL_DAY_OF_YEAR field.
* @draft ICU 3.0
*/
UDAT_DAY_OF_YEAR_FIELD = 10,
/**
* UFieldPosition selector for 'F' field alignment,
* FieldPosition and UFieldPosition selector for 'F' field alignment,
* corresponding to the UCAL_DAY_OF_WEEK_IN_MONTH field.
* @draft ICU 3.0
*/
UDAT_DAY_OF_WEEK_IN_MONTH_FIELD = 11,
/**
* UFieldPosition selector for 'w' field alignment,
* FieldPosition and UFieldPosition selector for 'w' field alignment,
* corresponding to the UCAL_WEEK_OF_YEAR field.
* @draft ICU 3.0
*/
UDAT_WEEK_OF_YEAR_FIELD = 12,
/**
* UFieldPosition selector for 'W' field alignment,
* FieldPosition and UFieldPosition selector for 'W' field alignment,
* corresponding to the UCAL_WEEK_OF_MONTH field.
* @draft ICU 3.0
*/
UDAT_WEEK_OF_MONTH_FIELD = 13,
/**
* UFieldPosition selector for 'a' field alignment,
* FieldPosition and UFieldPosition selector for 'a' field alignment,
* corresponding to the UCAL_AM_PM field.
* @draft ICU 3.0
*/
UDAT_AM_PM_FIELD = 14,
/**
* UFieldPosition selector for 'h' field alignment,
* FieldPosition and UFieldPosition selector for 'h' field alignment,
* corresponding to the UCAL_HOUR field.
* UDAT_HOUR1_FIELD is used for the one-based 12-hour clock.
* For example, 11:30 PM + 1 hour results in 12:30 AM.
@ -281,7 +282,7 @@ typedef enum UDateFormatField {
UDAT_HOUR1_FIELD = 15,
/**
* UFieldPosition selector for 'K' field alignment,
* FieldPosition and UFieldPosition selector for 'K' field alignment,
* corresponding to the UCAL_HOUR field.
* UDAT_HOUR0_FIELD is used for the zero-based 12-hour clock.
* For example, 11:30 PM + 1 hour results in 00:30 AM.
@ -290,7 +291,7 @@ typedef enum UDateFormatField {
UDAT_HOUR0_FIELD = 16,
/**
* UFieldPosition selector for 'z' field alignment,
* FieldPosition and UFieldPosition selector for 'z' field alignment,
* corresponding to the UCAL_ZONE_OFFSET and
* UCAL_DST_OFFSET fields.
* @draft ICU 3.0
@ -298,42 +299,42 @@ typedef enum UDateFormatField {
UDAT_TIMEZONE_FIELD = 17,
/**
* UFieldPosition selector for 'Y' field alignment,
* FieldPosition and UFieldPosition selector for 'Y' field alignment,
* corresponding to the UCAL_YEAR_WOY field.
* @draft ICU 3.0
*/
UDAT_YEAR_WOY_FIELD = 18,
/**
* UFieldPosition selector for 'e' field alignment,
* FieldPosition and UFieldPosition selector for 'e' field alignment,
* corresponding to the UCAL_DOW_LOCAL field.
* @draft ICU 3.0
*/
UDAT_DOW_LOCAL_FIELD = 19,
/**
* UFieldPosition selector for 'u' field alignment,
* FieldPosition and UFieldPosition selector for 'u' field alignment,
* corresponding to the UCAL_EXTENDED_YEAR field.
* @draft ICU 3.0
*/
UDAT_EXTENDED_YEAR_FIELD = 20,
/**
* UFieldPosition selector for 'g' field alignment,
* FieldPosition and UFieldPosition selector for 'g' field alignment,
* corresponding to the UCAL_JULIAN_DAY field.
* @draft ICU 3.0
*/
UDAT_JULIAN_DAY_FIELD = 21,
/**
* UFieldPosition selector for 'A' field alignment,
* FieldPosition and UFieldPosition selector for 'A' field alignment,
* corresponding to the UCAL_MILLISECONDS_IN_DAY field.
* @draft ICU 3.0
*/
UDAT_MILLISECONDS_IN_DAY_FIELD = 22,
/**
* UFieldPosition selector for 'Z' field alignment,
* FieldPosition and UFieldPosition selector for 'Z' field alignment,
* corresponding to the UCAL_ZONE_OFFSET and
* UCAL_DST_OFFSET fields.
* @draft ICU 3.0
@ -341,7 +342,8 @@ typedef enum UDateFormatField {
UDAT_TIMEZONE_RFC_FIELD = 23,
/**
* Number of UFieldPosition selectors for UDateFormat.
* Number of FieldPosition and UFieldPosition selectors for
* DateFormat and UDateFormat.
* Valid selectors range from 0 to UDAT_FIELD_COUNT-1.
* This value is subject to change if new fields are defined
* in the future.