Pergunta

Como você definir globalmente o formato da data em ASP.NET?

A minha máquina e servidores locais têm conjunto de definições regionais para "Inglês (Nova Zelândia)".

Quando eu formatar uma data com dd/MM/yyyy espero ver 19/11/2008 para hoje, por exemplo.

Até recentemente, que é o que eu fiz na verdade get de ambos minha máquina local e os servidores.

Apenas recentemente, por alguma razão misteriosa, nossas máquinas locais mudaram ligeiramente. Apesar de ainda ser definido como "Inglês (Nova Zelândia)", o delimter data mudou de / para -! A mesma mudança não ocorreu nos servidores que ainda mostrar "Inglês (Nova Zelândia)" eo / para o delimter data.

Então, agora para a minha máquina local, para o dd/MM/yyyy formato fico 19-11-2008 vez de 19/11/2008.

Este é um pouco desconcertante.

A única maneira de contornar isso que eu posso ver até agora é para escapar das barras e definir o formato para dd\/MM\/yyyy. Parece trabalho, mas não parece ser a solução ideal.

alguém pode ajudar por favor?

NOTA: Isto é para um aplicativo de intranet e eu não me importo sobre a verdadeira globalização. Eu só quero corrigir o formato de data e não ter que mudar em mim.

Foi útil?

Solução

Você pode alterar a cultura do thread atual em seu arquivo global, e substituir o formato de data por exemplo:

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;
}

Outras dicas

Em web.config, conjunto de marcas como por a seguinte documentação

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

Uma boa maneira é configurar o Web.Config, o formato de data aparecem em todos os componentes de um aspx

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

Você pode definir sua cultura sem manipulação:


using System.Globalization;
using System.Threading;

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

É um post antigo, mas eu pensei que poderia ser útil para mencioná-lo aqui, meu problema era algo como o que o OP pediu, mas a solução foi que a cultura foi alterado no IIS, não a partir do painel de controle.

IIS tem é a seleção cultura própria, que por padrão irá seguir a cultura do computador local. Mas, por algum motivo, foi alterado para uma cultura diferente, e eu comecei a receber esses formatos de data estranho.

Você pode olhar para mais respostas aqui .

Para seqüências de formato, o personagem formato / não realmente resolver para o literal "/" como seria de esperar. Em vez disso, ele resolve para o separador de data e hora atual como configurado em suas configurações regionais. Tente alterar a propriedade DateTimeFormatInfo.DateSeparator.

Para obter mais informações, consulte: http://msdn.microsoft.com /en-us/library/8kb3ddd4.aspx

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top