que trato de analizar una cadena que contiene milisegundos como esto:El análisis de un DateTime que contiene milisegundos falla para ciertas culturas. ¿Por qué?
string s = "11.05.2010 15:03:08.7718687"; // culture: de-CH DateTime d = DateTime.Parse(s); // works
Sin embargo, por ejemplo, bajo la des-de locale, el separador decimal es una coma (no un punto). Así se convierte en el ejemplo:
string s = "11.05.2010 15:03:08,7718687"; // culture: de-DE (note the comma) DateTime d = DateTime.Parse(s); // throws a FormatException
Es raro para mí que DateTime.Parse (s) se debe lanzar una FormatException ahora, ya que se supone que debe utilizar el CultureInfo.CurrentCulture para hacer el análisis. Incluso pasar CurrentCulture como un argumento explícitamente tampoco ayuda. ¿Alguien tiene una idea de por qué esto no funciona? ¿El análisis no tiene en cuenta el NumberFormatInfo.NumberDecimalSeparator?
En los días anteriores al formato de segundo sub-segundo se estandarizó (ISO 8601: 2004 lo hizo), entonces no importaba lo que era el separador. Por lo tanto, los estándares generalmente no cubren lo que se debe usar como el punto decimal para los segundos tiempos. No está claro que la información del formato numérico sea correcta, pero no necesariamente hay una mejor alternativa. Hemos estado luchando con el tema recientemente (en un contexto completamente diferente, no en las plataformas de Windows), y aún no encontramos un buen sistema para ello. Además, la compatibilidad hacia atrás (in) nos está dando algunos dolores de cabeza. –