c#

c# - TimeSpan.TryParseExact no funciona



(3)

El formato de cadena que está pasando es incorrecto.

var res=TimeSpan.TryParseExact("04:00:01", "g", CultureInfo.CurrentCulture, out aTime);

g- Formato corto general y es sensible a la cultura.

Más sobre esto aquí Cadenas de formato de intervalo de tiempo estándar

Estoy intentando recuperar un intervalo de tiempo de una cadena, pero TryParseExact está devolviendo falso (falla).

No puedo ver lo que estoy haciendo mal, ¿puedes ayudar? He intentado 2 versiones de mi línea en el código, ambos no funcionan.

TimeSpan.TryParseExact("04:00:01","HH:mm:ss",CultureInfo.CurrentCulture, out aTime)

y

TimeSpan.TryParseExact("04:00:01","HH:mm:ss", null, out aTime)

EDITAR: ambas respuestas aquí son correctas, tengo el formato incorrecto para mi formato de tiempo personalizado. El error que cometí es asumir que los formatos personalizados para DateTime funcionarían para TimeSpans, pero no lo hacen.


El problema está simplemente en la cadena de formato de TimeSpan, usted ha especificado "HH:mm:ss" . El especificador HH (mayúsculas) no es válido para el intervalo de tiempo. Deberías usar hh . Las cadenas de formato son de hecho sensibles a mayúsculas y minúsculas.

El carácter de dos puntos ( : también debe escaparse, así que use "hh//:mm//:ss" , @"hh/:mm/:ss" o "hh'':''mm'':''ss" . Las tres formas tendrán el mismo efecto.

Puede revisar una lista de cadenas de formato personalizadas válidas para TimeSpan here . y las cadenas de formato estándar para TimeSpan están here .

Mientras que HH es válido para DateTime y DateTimeOffset donde representa el reloj de 24 horas y la minúscula hh representa un reloj de 12 horas, para TimeSpan: el componente de horas siempre se basa en 24 horas. Usted pensaría que el formato HH sería el elegido, por uniformidad, pero no, es hh .


Probablemente debería mencionarte que necesitas escapar del carácter de colon.

TryParseExact("04:00:01", "HH//:mm//:ss" ...