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!

Foi útil?

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

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