Como você definir globalmente o formato da data em ASP.NET?
-
08-07-2019 - |
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.
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