DateTimeFormat.ShortDatePattern should use CLDR 'short' format on Unix.
authorEric Erhardt <eric.erhardt@microsoft.com>
Fri, 13 Nov 2015 22:01:06 +0000 (16:01 -0600)
committerEric Erhardt <eric.erhardt@microsoft.com>
Fri, 13 Nov 2015 22:01:06 +0000 (16:01 -0600)
The DateTimeFormat.ShortDatePattern is currently defaulting to using CLDR's 'yMd' skeleton. However, this value doesn't produce the best format for all cultures, ex. "de-DE". LongDatePattern uses CLDR's 'full' format. To be symmetrical, the ShortDatePattern should be using CLDR's 'short' format.

Fix https://github.com/dotnet/coreclr/issues/1736.

src/corefx/System.Globalization.Native/calendarData.cpp

index c18bc9d..f223e68 100644 (file)
@@ -556,11 +556,10 @@ extern "C" int32_t EnumCalendarInfo(EnumCalendarInfoCallback callback,
     {
         case ShortDates:
             // ShortDates to map kShort and kMedium in ICU, but also adding the "yMd"
-            // skeleton as well, as this
-            // closely matches what is used on Windows
-            return InvokeCallbackForDateTimePattern(locale, UDAT_YEAR_NUM_MONTH_DAY_UCHAR, callback, context) &&
-                   InvokeCallbackForDatePattern(locale, UDAT_SHORT, callback, context) &&
-                   InvokeCallbackForDatePattern(locale, UDAT_MEDIUM, callback, context);
+            // skeleton as well, as this closely matches what is used on Windows
+            return InvokeCallbackForDatePattern(locale, UDAT_SHORT, callback, context) &&
+                   InvokeCallbackForDatePattern(locale, UDAT_MEDIUM, callback, context) &&
+                   InvokeCallbackForDateTimePattern(locale, UDAT_YEAR_NUM_MONTH_DAY_UCHAR, callback, context);
         case LongDates:
             // LongDates map to kFull and kLong in ICU.
             return InvokeCallbackForDatePattern(locale, UDAT_FULL, callback, context) &&