Como faço para detectar a cultura atual do thread em execução?
-
13-09-2019 - |
Pergunta
Eu tenho uma configuração função agradável para formatação de datas conforme Leading Zero Data Format C #
Mas acontece na nossa fazenda temos algumas lâminas em execução em um locale Reino Unido e alguns em uma localidade dos EUA assim dependendo de qual deixa de funcionar.
Então o que eu estou atrás é como faço para testar o local servidor atual?
Algo como ...
if(Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName == "GB"){
...
}
else
{
..otherstatement
}
Ta
Solução
Você deve passar na cultura desejada para todas as suas funções de formatação (InvariantCulture, geralmente).
Como alternativa, você pode set a cultura na página como assim . Esse código também pode ir na substituição de aplicativos BeginRequest em seu arquivo asax.cs para afetar todas as páginas.
Outras dicas
Date now = DateTime.Now;
CultureInfo ci = Thread.CurrentThread.CurrentCulture;
Console.WriteLine(now.ToString("d", ci));
Geralmente nós ir com UTC em vez de código específico localidade.
Os testes para CurrentCulture é a única maneira de conseguir o que você pedir, tanto quanto eu sei. No entanto, gostaria de sugerir fortemente para manter datas como DateTime até que estejam a ser apresentado na interface do usuário, e não ter se-declarações na funcionalidade servidor que está contando com formatos de data.
Normalmente, eu tento aplicar formatação de data o mais próximo do usuário quanto possível.