Как вы глобально установить формат даты в ASP.NET?
-
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 имеет свой собственный выбор культуры, который по умолчанию будет следовать локальной компьютерной культуре. Но по какой-то причине он был изменен на другую культуру, и я начал получать эти странные форматы дат.
Вы можете найти дополнительные ответы здесь а>. р>
Для строк формата символ формата / на самом деле не преобразуется в литерал " / " как и следовало ожидать. Вместо этого он преобразуется в разделитель текущей даты и времени, настроенный в региональных настройках. Попробуйте изменить свойство DateTimeFormatInfo.DateSeparator.
Для получения дополнительной информации см. http://msdn.microsoft.com. /en-us/library/8kb3ddd4.aspx р>