Tengo un objeto DateTime y quiero mostrar la hora, minuto, segundo y segundo fraccional como una cadena que está localizada para la cultura actual.¿Cómo puedo convertir un DateTime en una cadena con segundos fraccionarios localizados?
Hay dos problemas con esto.
El primer problema es que no hay un formato estándar DateTime
que muestre los segundos fraccionarios. Básicamente quiero saber cómo obtener el formato long time DateTime pero con fracciones de segundo.
Podría, por supuesto, obtener DateTimeFormatInfo.LongTimePattern
y anexar ".fff" a ella y pasarlo a la DateTime.ToString()
, pero algunos de los formatos específicos de cultivo, específicamente los Estados Unidos, con el fin de AM/PM. Entonces no es tan simple.
El segundo problema es que DateTime.ToString()
no parece localizar el separador decimal numérico. Si decidiera simplemente obligar a cada cultura a usar un formato de tiempo personalizado codificado, aún no creará una cadena localizada ya que el separador decimal de números no será específico de una cultura.
Para complicar aún más las cosas, algunas culturas tienen formatos de fecha y hora que utilizan períodos como parte de su formateo. Esto hace que sea difícil colocar un marcador de posición, por ejemplo, el punto y reemplazarlo con un separador decimal específico de cultivo.
Por ahora han recurrido a esta solución:
string format = string.Format("HH:mm:ss{0}fff",
CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator);
string time = DateTime.Now.ToString(format);
que creo que debería funcionar para todas las culturas que no tiene el mismo separador decimal como separador de hora, pero eso es una suposición.
De Nota: Aunque sería bueno tener una solución a ambos problemas, para mi aplicación específica Estoy más interesado en la localización de un formato de fecha y hora personalizado con fracciones de segundo que el uso de un formato de fecha y hora estándar.
No creo que ninguna convención cultural incluya fracciones de segundos. Su enfoque se ve bien, pero me gustaría obtener el LongTimePattern y sustituirlo por 'ss' para superar el problema AM/PM frente a HH. –