c# - now - ¿Qué pasa con esta línea TimeSpan.ParseExact?
new datetime c# (5)
Recibo una excepción FormatError de esta llamada a TimeSpan.ParseExact, pero la documentación de MSDN que estoy leyendo indica que este formato debe ser correcto:
TimeSpan timeSpan = TimeSpan.ParseExact("172100", "HHmmss", CultureInfo.InvariantCulture);
¿Puede alguien decirme por qué esto no funciona? Estoy haciendo casi exactamente lo mismo con una llamada a DateTime.ParseExact y esto funciona bien:
DateTime datetTime = DateTime.ParseExact("090820", "yyMMdd", CultureInfo.InvariantCulture);
Analice la cadena con un valor DateTime, luego reste su valor de fecha para obtener el tiempo como TimeSpan:
DateTime t = DateTime.ParseExact("172100", "HHmmss", CultureInfo.InvariantCulture);
TimeSpan time = t - t.Date;
Con referencia a esta documentación más precisa: http://msdn.microsoft.com/en-us/library/ee372287.aspx
Necesita usar hh
por horas, no HH
.
Intenta utilizar cadenas de formato DateTime
para analizar un TimeSpan
. TimeSpan
tiene sus propias cadenas de formato (ligeramente diferentes). Consulte MSDN para obtener una lista completa: cadenas de formato TimeSpan personalizadas
En particular, cambie HH
a hh
. Esto te dará:
TimeSpan timeSpan = TimeSpan.ParseExact("172100",
"hhmmss", // Note this parameter
CultureInfo.InvariantCulture);
Según las cadenas de formato TimeSpan personalizadas , las horas se representan por "h" en lugar de "H".
Así que esto funciona bien:
TimeSpan timeSpan = TimeSpan.ParseExact("172100", "hhmmss",
CultureInfo.InvariantCulture);
La documentación a la que se ha vinculado es para cadenas de formato de fecha y hora personalizadas, que no son las mismas. Son para DateTime.ParseExact
etc. la documentación a la que me he vinculado es para TimeSpan.ParseExact
etc.
TimeSpan no usa las mismas reglas de formato que DateTime.
Quieres hhmmss, no HHmmss.
Está viendo la página incorrecta en MSDN; desea algo como: