Será que este costume DateTime formato de quebra de outras culturas?
-
22-08-2019 - |
Pergunta
Ao exibir os meus valores de data e hora, eu quero que eles sejam formatados assim: "9 de fevereiro de 2009 07:00"
Eu estou usando o código a seguir, mas estou preocupado que a data pode exibir incorretamente em outras culturas. Alguém pode me dizer se este é o caso ou não, e se é como eu posso corrigi-lo?
Date.ToString("MMMM dd, yyyy hh:mm tt");
Obrigado!
Solução
Eu estou usando o código a seguir, mas estou preocupado que a data pode exibir incorretamente em outras culturas.
O que exatamente é ‘correta’? Você é um aplicativo do lado do cliente normal? Se assim for, você vai ficar localizada nomes dos meses. É que ‘incorreta’? Depende do que você está procurando.
Se você do quiser vezes locale Friendly em um aplicativo do lado do cliente, em seguida, usando o formato de longa data padrão lhe dará os resultados mais suaves. Na minha região eu não gostaria de ver relógio de 12 horas ou o mês antes do dia, embora eu certamente compreendê-lo.
Se você é um aplicativo do lado do servidor você não quiser usar qualquer coisa localizada-padrão, porque o local será o servidor é, em vez de seus usuários, e você vai ter um problema de portabilidade estranho. Neste caso, você vai ter que quer permitir que o usuário escolher seu próprio local, ou usar suas próprias funções de formatação de data com built-in nomes dos meses em inglês.
(Ou, para evitar o problema, há nomes mês em que caso formato ISO-8601.. “AAAA-MM-DD HH: MM: SS” seria a escolha padrão)
Outras dicas
Eu prefiro o formato ISO 8601 (e sim, sem o "T"): você não tem que fazer malabarismos entre diferentes representações dependendo de quem está lendo seus dados. Menos código, menos bugs.
I manter encontrar documentos originalmente escritos em Inglês que são "traduzidos", mas com datas que permanecem "como está" e assim se tornam completamente errado.
Como um bônus adicional, ISO formatado datas tipo assim como cordas comuns!
Por que não simplesmente usar longa data / formato (s) tempo do usuário?
O código
DateTime now=DateTime.Now;
foreach(CultureInfo inf in CultureInfo.GetCultures( CultureTypes.InstalledWin32Cultures))
{
Console.WriteLine(now.ToString("MMMM dd, yyyy hh:mm tt", inf.DateTimeFormat));
}
retorno
Tlhakole 09 de 2009 04:21
guovvamanu 09 de 2009 04:21
goevten 09 de 2009 04:21
Veljaca 09 de 2009 04:21
kuovamaanu 09 de 2009 04:21
Hatun puquy 09 de 2009 04:21
guovvamanu 09 de 2009 04:21
ta? lvvmannu 09 de 2009 04:21
Chwefror 09 de 2009 04:21
fevereiro 09 de 2009 04:21
guovvamano 09 de 2009 04:21
Hui-tanguru 09 de 2009 04:21
Hatun puquy 09 de 2009 04:21
fevereiro 09 de 2009 04:21
Quer dizer, isso está mostrando para cada cultura em seu código