Как вы глобально установить формат даты в ASP.NET?

StackOverflow https://stackoverflow.com/questions/300841

  •  08-07-2019
  •  | 
  •  

Вопрос

Как глобально установить формат даты в ASP.NET?

Для локального компьютера и серверов установлены региональные настройки "Английский (Новая Зеландия)".

Когда я форматирую дату с помощью дд / мм / гггг , я ожидаю увидеть 19/11/2008 на сегодняшний день, например.

До недавнего времени именно это я и делал на своей локальной машине и на серверах.

Совсем недавно по какой-то таинственной причине наши локальные машины изменились очень незначительно. Несмотря на то, что по-прежнему установлено значение «Английский (Новая Зеландия)», разделитель даты изменился с / на - ! Такое же изменение не произошло на серверах, на которых по-прежнему отображается «Английский (Новая Зеландия)». и / для разделителя даты.

Итак, теперь для моего локального компьютера, для формата дд / мм / гггг я получаю 19-11-2008 вместо 19/11/2008 .

Это немного сбивает с толку.

Единственный способ обойти это, что я пока вижу, это избежать косой черты и установить формат dd \ / MM \ / yyyy . Кажется, это работает, но это не идеальное решение.

Может кто-нибудь помочь, пожалуйста?

ПРИМЕЧАНИЕ. Это приложение для интрасети, и меня не волнует истинная глобализация. Я просто хочу исправить формат даты, чтобы он не менялся.

Это было полезно?

Решение

Вы можете изменить текущую культуру потоков в файле Global.asax и переопределить формат даты, например:

using System.Globalization;
using System.Threading;

//...
protected void Application_BeginRequest(Object sender, EventArgs e)
{    
  CultureInfo newCulture = (CultureInfo) System.Threading.Thread.CurrentThread.CurrentCulture.Clone();
  newCulture.DateTimeFormat.ShortDatePattern = "dd-MMM-yyyy";
  newCulture.DateTimeFormat.DateSeparator = "-";
  Thread.CurrentThread.CurrentCulture = newCulture;
}

Другие советы

В файле web.config установите тег в соответствии с следующая документация

<system.web>
    <globalization  culture="en-NZ"  uiCulture="en-NZ"/>
</system.web>

Хорошим способом является настройка Web.Config, формат даты отображается во всех компонентах aspx

<system.web>    
<globalization uiCulture="en" culture="en-NZ" />
</system.web>

Вы можете настроить свою культуру без манипуляций:


using System.Globalization;
using System.Threading;

//... protected void Application_BeginRequest(Object sender, EventArgs e) {
Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-NZ"); }

Это старый пост, но я подумал, что было бы полезно упомянуть его здесь, моя проблема была чем-то вроде того, о чем спрашивал ОП, но решение состояло в том, что культура была изменена в IIS, а не из панели управления.

IIS имеет свой собственный выбор культуры, который по умолчанию будет следовать локальной компьютерной культуре. Но по какой-то причине он был изменен на другую культуру, и я начал получать эти странные форматы дат.

Вы можете найти дополнительные ответы здесь .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top