yyyymmddhhmmss now new formato fff fecha convertir c# datetime .net-4.0 datetime-format

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;



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.