Muy simple usando el formato de cadena
en .ToSTring("") :
si usa "hh" - >> La hora, usando un reloj de 12 horas de 01 a 12.
si usa "HH" - >> La hora, usando un reloj de 24 horas de 00 a 23.
si agrega "tt" - >> El designador Am / Pm.
ejemplo de conversión de 23:12 a 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 un segundo, eso no es todo lo que necesita para preocuparse por otra cosa, es la cultura del sistema porque el mismo código ejecutado en ventanas con otro idioma especialmente con idioma de cultura diferente generará resultados diferentes con el mismo código
Un ejemplo de ventanas configuradas con la cultura árabe del idioma se mostrará así:
// 23:12 م
م significa Tarde (primer leter de مساء).
en otro sistema, la cultura dependerá de lo que esté configurado en la opción regional de Windows y el idioma, mostrará // 23:12 du.
puede cambiar entre diferentes formatos en el panel de control de Windows en Windows regional e idioma -> formato actual (cuadro combinado) y cambiar ... aplicarlo haga una reconstrucción (ejecución) de su aplicación y vea de qué está hablando iam.
Entonces, ¿a quién puedo obligar a mostrar palabras Am y Pm en inglés si la cultura del sistema actual no está configurada en inglés?
fácil simplemente agregando dos líneas: ->
el primer paso agregar using System.Globalization;
encima de su código
y modificando el código anterior para que sea así:
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 el formato predeterminado en inglés.
otra pregunta ¿Quiero que el pm esté en árabe o en un idioma específico, incluso si uso ventanas configuradas en inglés (u otro idioma) en formato regional?
Soción para el ejemplo árabe:
DateTime d = new DateTime(1, 1, 1, 23, 12, 0);
var res = d.ToString("HH:mm tt", CultureInfo.CreateSpecificCulture("ar-AE"));
esto mostrará // 23:12 م
evento si mi sistema está configurado en un formato de región en inglés. puede cambiar "ar-AE" si desea otro formato de idioma. Hay una lista de cada idioma y su formato.
ejemplos:
ar ar-SA Arabic
ar-BH ar-BH Arabic (Bahrain)
ar-DZ ar-DZ Arabic (Algeria)
ar-EG ar-EG Arabic (Egypt)
big list...
hazme saber si tienes otra pregunta.
DateTime
que esto. Ver msdn.microsoft.com/en-us/library/8kb3ddd4.aspx