convert c# timespan

convert - c# timespan format am pm



Parse string to TimeSpan (5)

Tengo algunas cadenas de formato xxh: yym donde xx es horas y aa son minutos como "05h: 30m". ¿Cuál es una forma elegante de convertir una cadena de este tipo a TimeSpan?


¿ TimeSpan.Parse y TimeSpan.TryParse no son opciones? Si no está utilizando un formato "aprobado", deberá realizar el análisis sintáctico manualmente. Probablemente capturaría tus dos valores enteros en una expresión regular, y luego trataré de analizarlos en enteros, a partir de ahí puedes crear un nuevo TimeSpan con su constructor.


Aquí hay una posibilidad:

TimeSpan.Parse(s.Remove(2, 1).Remove(5, 1));

Y si desea que sea más elegante en su código, use un método de extensión:

public static TimeSpan ToTimeSpan(this string s) { TimeSpan t = TimeSpan.Parse(s.Remove(2, 1).Remove(5, 1)); return t; }

Entonces puedes hacer

"05h:30m".ToTimeSpan();


Esto parece funcionar, aunque es un poco hackish:

TimeSpan span; if (TimeSpan.TryParse("05h:30m".Replace("m","").Replace("h",""), out span)) MessageBox.Show(span.ToString());


DateTime.ParseExact o DateTime.TryParseExact permite especificar el formato exacto de la entrada. Después de obtener el DateTime , puede tomar el DateTime.TimeOfDay que es un TimeSpan .

En ausencia de TimeSpan.TryParseExact , creo que una solución ''elegante'' está fuera de la mezcla.

@buyutec Como sospechabas, este método no funcionaría si el tiempo dura más de 24 horas.