CultureInfo не согласуется между версиями Windows

Кто-нибудь замечал, что в разных версиях Windows формат CultureInfo приводит к разному шаблону?

Windows 7 создала dddd, MMMM dd, YYYY

Пример вывода: Windows 7

И Windows 10, и Windows Server 2012 создали dddd, MMMM d, YYYY

Пример вывода: Windows 10 и Сервер 2012 R2

Я получил этот образец с сайта MSDN на DateTime. . Изменено для проверки опережающего нуля дня.

public class Sample
{
    public static void Main()
    {
        string msg1 = "The date and time patterns are defined in the DateTimeFormatInfo \n" +
                      "object associated with the current thread culture.\n";

        // Initialize a DateTime object.
        Console.WriteLine("Initialize the DateTime object to May 06, 2001 3:02:15 AM.\n");
        DateTime myDateTime = new System.DateTime(2001, 5, 6, 3, 2, 15);

        // Identify the source of the date and time patterns.
        Console.WriteLine(msg1);

        // Display the name of the current culture.
        CultureInfo ci = CultureInfo.GetCultureInfo("en-us");
        Console.WriteLine("Current culture: \"{0}\"\n", ci.Name);

        // Display the long date pattern and string.
        Console.WriteLine("Long date pattern: \"{0}\"", ci.DateTimeFormat.LongDatePattern);
        Console.WriteLine("Long date string:  \"{0}\"\n", myDateTime.ToLongDateString());

        // Display the long time pattern and string.
        Console.WriteLine("Long time pattern: \"{0}\"", ci.DateTimeFormat.LongTimePattern);
        Console.WriteLine("Long time string:  \"{0}\"\n", myDateTime.ToLongTimeString());

        // Display the short date pattern and string.
        Console.WriteLine("Short date pattern: \"{0}\"", ci.DateTimeFormat.ShortDatePattern);
        Console.WriteLine("Short date string:  \"{0}\"\n", myDateTime.ToShortDateString());

        // Display the short time pattern and string.
        Console.WriteLine("Short time pattern: \"{0}\"", ci.DateTimeFormat.ShortTimePattern);
        Console.WriteLine("Short time string:  \"{0}\"\n", myDateTime.ToShortTimeString());


        Console.ReadLine();
    }
}

person DjayFresh    schedule 12.01.2016    source источник
comment
Из документов для CultureInfo: за исключением инвариантной культуры, данные культуры являются динамическими. Это верно даже для предопределенных культур. Например, страны или регионы принимают новые валюты, меняют написание слов или меняют предпочтительный календарь, и определения культуры изменяются, чтобы отслеживать это. Пользовательские культуры могут быть изменены без предварительного уведомления, и любая конкретная культура может быть переопределена настраиваемой культурой замены. Кроме того, как обсуждается ниже, отдельный пользователь может переопределить культурные предпочтения. Приложения всегда должны получать данные культуры во время выполнения.   -  person Mike Zboray    schedule 13.01.2016
comment
@MikeZboray, я был удивлен, что en-NZ меняет шаблон «tt» для TShortTimeStrting с «am/pm». на «AM / PM», и я трачу много времени на просмотр объявлений и документации .Net, чтобы выяснить какие-либо признаки того, что это изменение было введено в Windows 10 и Windows Server 2016 (или ранее для WIndows Server). Но действительно, they are subject to change without notice.   -  person Paul L    schedule 19.12.2019


Ответы (1)


Кроме того, в Windows 10 доступно гораздо больше информации о культуре. Я надеюсь, что это будет совместимо с Windows Server 2016, и желательно распространить его на все выпуски через WU.

Например; Windows 10 поддерживает 247 regions, тогда как Windows 2012R2 поддерживает только 142 regions.

Объекты CultureInfo разделены на регионы:

Windows 10 введите здесь описание изображения

Windows 2012R2 введите здесь описание изображения

person gimlichael    schedule 08.02.2017