Cómo convertir cadena “07:35” (HH: MM) a TimeSpan

Me gustaría saber si hay una forma de convertir una cadena formateada en 24 horas a un TimeSpan.

En este momento tengo un “estilo antiguo”:

string stringTime = "07:35"; string[] values = stringTime.Split(':'); TimeSpan ts = new TimeSpan(values[0], values[1], 0); 

Si bien es cierto que esto funcionará:

 TimeSpan time = TimeSpan.Parse("07:35"); 

Y si lo está usando para validación …

 TimeSpan time; if (!TimeSpan.TryParse("07:35", out time)) { // handle validation error } 

Tenga en cuenta que TimeSpan está destinado principalmente a trabajar con el tiempo transcurrido, en lugar de la hora del día. Aceptará valores de más de 24 horas y también aceptará valores negativos.

Si necesita validar que la cadena de entrada es una hora válida (> = 00:00 y <24:00), entonces debería considerar esto en su lugar:

 DateTime dt; if (!DateTime.TryParseExact("07:35", "HH:mm", CultureInfo.InvariantCulture, DateTimeStyles.None, out dt)) { // handle validation error } TimeSpan time = dt.TimeOfDay; 

Como beneficio adicional, esto también analizará los tiempos formateados de 12 horas cuando se incluye un AM o PM, siempre que proporcione la cadena de formato adecuada, como "h:mm tt" .

Use TimeSpan.Parse para convertir la cadena

http://msdn.microsoft.com/en-us/library/system.timespan.parse(v=vs.110).aspx

Tratar

  var ts = TimeSpan.Parse(stringTime); 

Con un .NET más nuevo también tienes

  TimeSpan ts; if(!TimeSpan.TryParse(stringTime, out ts)){ // throw exception or whatnot } // ts now has a valid format 

Esta es la expresión general para analizar cadenas en .NET con la primera versión manejando cadenas erróneas al lanzar FormatException y la última permitiendo que Boolean TryParse le brinde la información directamente.

Puede convertir la hora usando el siguiente código.

 TimeSpan _time = TimeSpan.Parse("07:35"); 

Pero si desea obtener la hora actual del día, puede usar el siguiente código:

 TimeSpan _CurrentTime = DateTime.Now.TimeOfDay; 

El resultado será:

 03:54:35.7763461 

Con un objeto cantando las Horas, Minutos, Segundos, Garrapatas y etc.