Установка формата даты в теге глобализации ASP.NET web.config?

В нашем web.config я использую следующий тег для определения языка интерфейса веб-сайта ASP.NET.

<globalization
   enableClientBasedCulture="true"        
   culture="auto:en-GB"
   uiCulture="auto:en"/>

Это работает, как и ожидалось: клиент запросил конкретную локализацию, чтобы получить ее, все остальные с удовольствием смотрят настройки en-GB.

Из-за политики компании мне нужно изменить формат даты на стандартный формат ISO 8601 (ГГГГ-ММ-ДД) для всех. Возможно ли это в центральном месте в web.config, или мне нужно менять это вручную в каждом случае?

Дополнение: Можно ли получить этот формат даты при ограничении интерфейса английским языком?


person Jens    schedule 18.03.2010    source источник


Ответы (2)


Вам следует создать свою собственную культуру с помощью CultureAndRegionInfoBuilder.

 class Program
        {
            static void Main(string[] args)
            {
                CultureInfo ci;
                CultureAndRegionInfoBuilder cib = null;
                try
                {
                    // Create a CultureAndRegionInfoBuilder object named "x-en-GB".
                    Console.WriteLine("Create and explore the CultureAndRegionInfoBuilder...\n");
                    cib = new CultureAndRegionInfoBuilder(
                        "x-en-GB", CultureAndRegionModifiers.None);

                    // Populate the new CultureAndRegionInfoBuilder object with culture information.
                    ci = new CultureInfo("en-GB");
                    ci.DateTimeFormat.ShortDatePattern = "yyyy-MM-dd";
                    //ci.DateTimeFormat.FullDateTimePattern = "yyyy-MM-dd";
                    //ci.DateTimeFormat.LongDatePattern = "yyyy-MM-dd";

//...
                    //...
                    cib.LoadDataFromCultureInfo(ci);




                    // Populate the new CultureAndRegionInfoBuilder object with region information.
                    RegionInfo ri = new RegionInfo("GB");
                    cib.LoadDataFromRegionInfo(ri);

                    Console.WriteLine("Register the custom culture...");
                    cib.Register();



                }
                catch (Exception e)
                {
                    Console.WriteLine(e);
                }

                Console.WriteLine("Create and explore the custom culture...\n");
                ci = new CultureInfo("x-en-GB");

                //Thread.CurrentThread.CurrentCulture = ci;
                //Thread.CurrentThread.CurrentUICulture = ci;

                Console.WriteLine(DateTime.Now.ToString(ci));

                Console.ReadLine();
            }
        }
person garik    schedule 18.03.2010

Если вам нужно, чтобы формат был одинаковым для разных культур, вам придется устанавливать DateTimeFormat всякий раз, когда вы создаете экземпляр объекта CultureInfo.

Для этого нет опции глобальной конфигурации.

person Oded    schedule 18.03.2010