From 79b8f74642b2f2c15efee2e0e6c925725d733186 Mon Sep 17 00:00:00 2001 From: Peter Edberg Date: Mon, 29 Apr 2013 22:10:29 +0000 Subject: [PATCH] ICU-9984 For DTPG, Y in skeleton should produce Y in pattern X-SVN-Rev: 33562 --- icu4c/source/i18n/dtptngen.cpp | 2 +- icu4c/source/test/intltest/dtptngts.cpp | 10 ++++++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/icu4c/source/i18n/dtptngen.cpp b/icu4c/source/i18n/dtptngen.cpp index 200237b8073..ec205d60e8c 100644 --- a/icu4c/source/i18n/dtptngen.cpp +++ b/icu4c/source/i18n/dtptngen.cpp @@ -1091,7 +1091,7 @@ DateTimePatternGenerator::adjustFieldTypes(const UnicodeString& pattern, } } UChar c = (typeValue!= UDATPG_HOUR_FIELD && typeValue!= UDATPG_MONTH_FIELD && - typeValue!= UDATPG_WEEKDAY_FIELD && typeValue!= UDATPG_YEAR_FIELD)? + typeValue!= UDATPG_WEEKDAY_FIELD && (typeValue!= UDATPG_YEAR_FIELD || reqField.charAt(0)==CAP_Y))? reqField.charAt(0): field.charAt(0); field.remove(); for (int32_t i=adjFieldLen; i>0; --i) { diff --git a/icu4c/source/test/intltest/dtptngts.cpp b/icu4c/source/test/intltest/dtptngts.cpp index d34560d9a2c..56ec42ea323 100644 --- a/icu4c/source/test/intltest/dtptngts.cpp +++ b/icu4c/source/test/intltest/dtptngts.cpp @@ -849,6 +849,16 @@ void IntlTestDateTimePatternGeneratorAPI::testOptions(/*char *par*/) { "be", "Hmm", "H.mm", UDATPG_MATCH_HOUR_FIELD_LENGTH }, { "be", "HHmm", "HH.mm", UDATPG_MATCH_HOUR_FIELD_LENGTH }, { "be", "hhmm", "hh.mm a", UDATPG_MATCH_HOUR_FIELD_LENGTH }, + // + { "en", "yyyy", "yyyy", UDATPG_MATCH_NO_OPTIONS }, + { "en", "YYYY", "YYYY", UDATPG_MATCH_NO_OPTIONS }, + { "en", "U", "y", UDATPG_MATCH_NO_OPTIONS }, + { "en@calendar=japanese", "yyyy", "y G", UDATPG_MATCH_NO_OPTIONS }, + { "en@calendar=japanese", "YYYY", "Y G", UDATPG_MATCH_NO_OPTIONS }, + { "en@calendar=japanese", "U", "y G", UDATPG_MATCH_NO_OPTIONS }, + { "en@calendar=chinese", "yyyy", "U", UDATPG_MATCH_NO_OPTIONS }, + { "en@calendar=chinese", "YYYY", "Y", UDATPG_MATCH_NO_OPTIONS }, + { "en@calendar=chinese", "U", "U", UDATPG_MATCH_NO_OPTIONS }, }; int count = sizeof(testData) / sizeof(testData[0]);