Как вы устанавливаете глобальный формат даты в ASP.NET?
Как вы глобально задаете формат даты в ASP.NET?
На моем локальном компьютере и серверах есть региональные настройки, установленные на "English (Новая Зеландия)".
Когда я форматирую дату с помощью dd/MM/yyyy
, я ожидаю увидеть 19/11/2008
на сегодняшний день, например.
До недавнего времени это то, что я действительно получал как с моей локальной машины, так и с серверов.
Совсем недавно, по какой-то загадочной причине, наши локальные машины немного изменились. Несмотря на то, что все еще настроен на "английский (Новая Зеландия)", разделитель дат изменился с /
на -
! Такое же изменение не произошло на серверах, которые по-прежнему показывают "Английский (Новая Зеландия)" и /
для деминера даты.
Итак, теперь для моей локальной машины для формата dd/MM/yyyy
я получаю 19-11-2008
вместо 19/11/2008
.
Это немного обескураживает.
Единственный путь, который я могу увидеть до сих пор, - это избежать косой черты и установить формат dd\/MM\/yyyy
. Кажется, что это работает, но это не идеальное решение.
Кто-нибудь может помочь?
ПРИМЕЧАНИЕ. Это приложение для интрасети, и меня не волнует истинная глобализация. Я просто хочу исправить формат даты и не изменять его.
Ответы
Ответ 1
Вы можете изменить текущую культуру потока в файле 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;
}
Ответ 2
В web.config установите тег как следующую документацию
<system.web>
<globalization culture="en-NZ" uiCulture="en-NZ"/>
</system.web>
Ответ 3
Хорошим способом является настройка Web.Config, формат даты отображается во всех компонентах aspx
<system.web>
<globalization uiCulture="en" culture="en-NZ" />
</system.web>
Ответ 4
Вы можете настроить свою культуру без манипуляций:
using System.Globalization;
using System.Threading;
//...
protected void Application_BeginRequest(Object sender, EventArgs e)
{
Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-NZ");
}
Ответ 5
Для форматированных строк символ формата/фактически не разрешает литерал "/", как и следовало ожидать. Вместо этого он разрешает текущий разделитель времени даты, как он настроен в ваших региональных настройках. Попробуйте изменить свойство DateTimeFormatInfo.DateSeparator.
Для получения дополнительной информации см. http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx
Ответ 6
Это старый пост, но я подумал, что было бы полезно упомянуть его здесь, моя проблема была чем-то вроде того, что задал ОП, но решение заключалось в том, что культура была изменена в IIS, а не с панели управления.
IIS имеет собственный выбор культуры, который по умолчанию будет следовать культуре локального компьютера. Но по какой-то причине он был изменен на другую культуру, и я начал получать эти странные форматы даты.
Вы можете найти дополнительные ответы здесь.