Как вы глобально установить формат даты в ASP.NET? - PullRequest
53 голосов
/ 19 ноября 2008

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

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

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

До недавнего времени именно это я и получал как от своей локальной машины, так и от серверов.

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

Так что теперь для моей локальной машины, для формата dd/MM/yyyy я получаю 19-11-2008 вместо 19/11/2008.

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

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

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

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

Ответы [ 6 ]

106 голосов
/ 19 ноября 2008

Вы можете изменить текущую культуру потоков в файле 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;
}
42 голосов
/ 08 мая 2009

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

<system.web>
    <globalization  culture="en-NZ"  uiCulture="en-NZ"/>
</system.web>
7 голосов
/ 06 ноября 2013

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

<system.web>    
<globalization uiCulture="en" culture="en-NZ" />
</system.web>
4 голосов
/ 19 ноября 2008

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

<code>
using System.Globalization;
using System.Threading;</p>

<p>//...
protected void Application_BeginRequest(Object sender, EventArgs e)
{<br>
  Thread.CurrentThread.CurrentCulture = Thread.CurrentThread.CurrentUICulture = new CultureInfo("en-NZ");
}
1 голос
/ 01 февраля 2017

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

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

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

0 голосов
/ 19 ноября 2008

Для строк формата символ формата / фактически не разрешается до литерала "/", как вы ожидаете. Вместо этого он преобразуется в разделитель текущей даты и времени, настроенный в региональных настройках. Попробуйте изменить свойство DateTimeFormatInfo.DateSeparator.

Для получения дополнительной информации см .: http://msdn.microsoft.com/en-us/library/8kb3ddd4.aspx

...