Muito simples usando o formato de string
em .ToSTring("") :
se você usar "hh" - >> A hora, usando um relógio de 12 horas de 01 a 12.
se você usar "HH" - >> A hora, usando um relógio de 24 horas de 00 a 23.
se você adicionar "tt" - >> O designador Am / Pm.
exemplo de conversão de 23:12 para 11:12 Pm:
DateTime d = new DateTime(1, 1, 1, 23, 12, 0);
var res = d.ToString("hh:mm tt"); // this show 11:12 Pm
var res2 = d.ToString("HH:mm"); // this show 23:12
Console.WriteLine(res);
Console.WriteLine(res2);
Console.Read();
espere um segundo que não é tudo o que você precisa para se preocupar com outra coisa: o sistema Culture, porque o mesmo código executado no Windows com outro idioma, especialmente com idioma diferente, irá gerar resultados diferentes com o mesmo código.
Um exemplo de janela definida para a linguagem árabe será mostrada assim:
// 23:12 م
م significa noite (primeira letra de مساء).
em outra cultura do sistema, depende do que está definido na opção regional e de idioma do windows, mostrará // 23:12 du.
você pode alternar entre diferentes formatos no painel de controle do Windows, em regional e idioma -> formato atual (caixa de combinação) e alterar ... aplicá-lo, reconstruir (executar) o aplicativo e ver o que estou falando.
então quem posso forçar a exibição de palavras Am e Pm em inglês se a cultura do sistema atual não estiver definida como inglês?
fácil apenas adicionando duas linhas: ->
o primeiro passo adicione using System.Globalization;
em cima do seu código
e modificando o código anterior para ficar assim:
DateTime d = new DateTime(1, 1, 1, 23, 12, 0);
var res = d.ToString("HH:mm tt", CultureInfo.InvariantCulture); // this show 11:12 Pm
InvariantCulture => usando o formato padrão em inglês.
outra pergunta: quero que a pm esteja em árabe ou em um idioma específico, mesmo que eu use janelas definidas para o formato regional em inglês (ou outro idioma)?
Soution para exemplo árabe:
DateTime d = new DateTime(1, 1, 1, 23, 12, 0);
var res = d.ToString("HH:mm tt", CultureInfo.CreateSpecificCulture("ar-AE"));
isso mostrará // 23:12 م
evento se meu sistema estiver definido para um formato de região em inglês. você pode alterar "ar-AE" se desejar outro formato de idioma. existe uma lista de cada idioma e seu formato.
exemplos:
ar ar-SA Arabic
ar-BH ar-BH Arabic (Bahrain)
ar-DZ ar-DZ Arabic (Algeria)
ar-EG ar-EG Arabic (Egypt)
big list...
me avise se você tiver outra pergunta.
DateTime
que isso. Consulte msdn.microsoft.com/en-us/library/8kb3ddd4.aspx