ICU-6726 Integrate changes back into ICU4C trunk

X-SVN-Rev: 25653
This commit is contained in:
Jason Spieth 2009-03-25 20:25:39 +00:00
parent 9d0666f840
commit b0c73cc54b
4 changed files with 42 additions and 31 deletions

View file

@ -265,31 +265,31 @@ void RelativeDateFormat::loadDates(UErrorCode &status) {
int32_t resStrLen = 0;
int32_t glueIndex = kDateTime;
switch (fDateStyle) {
case kFullRelative:
case kFull:
// glueIndex is always kDateTime
break;
case kLongRelative:
case kLong:
if (patternsSize > (kDateTime + kLong)) {
glueIndex = kDateTime + kLong;
}
break;
case kMediumRelative:
case kMedium:
if (patternsSize > (kDateTime + kMedium)) {
glueIndex = kDateTime + kMedium;
}
break;
case kShortRelative:
case kShort:
if (patternsSize > (kDateTime + kShort)) {
glueIndex = kDateTime + kShort;
}
break;
default:
break;
if ((patternsSize > DateFormat::kDateTimeOffset) &&
(patternsSize >= (DateFormat::kDateTimeOffset + DateFormat::kShort + 1))
) {
// Get proper date time format
switch (fDateStyle) {
case kFullRelative:
case kFull:
glueIndex = kDateTimeOffset + kFull;
break;
case kLongRelative:
case kLong:
glueIndex = kDateTimeOffset + kLong;
break;
case kMediumRelative:
case kMedium:
glueIndex = kDateTimeOffset + kMedium;
break;
case kShortRelative:
case kShort:
glueIndex = kDateTimeOffset + kShort;
break;
default:
break;
}
}
const UChar *resStr = ures_getStringByIndex(dateTimePatterns, glueIndex, &resStrLen, &tempStatus);

View file

@ -573,8 +573,10 @@ void SimpleDateFormat::construct(EStyle timeStyle,
int32_t glueIndex = kDateTime;
int32_t patternsSize = ures_getSize(dateTimePatterns);
if (patternsSize > kDateTime + 1) {
glueIndex = (int32_t)(kDateTime + (dateStyle - kDateOffset));
if ((patternsSize > kDateTimeOffset) &&
(patternsSize >= (kDateTimeOffset + kShort + 1))) {
// Get proper date time format
glueIndex = (int32_t)(kDateTimeOffset + (dateStyle - kDateOffset));
}
resStr = ures_getStringByIndex(dateTimePatterns, glueIndex, &resStrLen, &status);

View file

@ -141,8 +141,8 @@ public:
/**
* Constants for various style patterns. These reflect the order of items in
* the DateTimePatterns resource. There are 4 time patterns, 4 date patterns,
* and then the date-time pattern. Each block of 4 values in the resource occurs
* in the order full, long, medium, short.
* the default date-time pattern, and 4 date-time patterns. Each block of 4 values
* in the resource occurs in the order full, long, medium, short.
* @stable ICU 2.4
*/
enum EStyle
@ -161,6 +161,13 @@ public:
// kShort + kDateOffset = 7
kDateTime = 8,
// Default DateTime
kDateTimeOffset = kDateTime + 1,
// kFull + kDateTimeOffset = 9
// kLong + kDateTimeOffset = 10
// kMedium + kDateTimeOffset = 11
// kShort + kDateTimeOffset = 12
// relative dates
kRelative = (1 << 7),

View file

@ -76,8 +76,10 @@ UnicodeString* Win32DateFormat::getTimeDateFormat(const Calendar *cal, const Loc
int32_t resStrLen = 0;
int32_t glueIndex = DateFormat::kDateTime;
int32_t patSize = ures_getSize(patBundle);
if (patSize > DateFormat::kDateTime + 1) {
glueIndex = (int32_t)(DateFormat::kDateTime + (fDateStyle - DateFormat::kDateOffset));
if ((patSize > DateFormat::kDateTimeOffset) &&
(patSize >= (DateFormat::kDateTimeOffset + DateFormat::kShort + 1))) {
// Get proper date time format
glueIndex = (int32_t)(DateFormat::kDateTimeOffset + (fDateStyle - DateFormat::kDateOffset));
}
const UChar *resStr = ures_getStringByIndex(patBundle, glueIndex, &resStrLen, &status);