Analysieren Sie die Zeichenfolge in TimeSpan
Frage
Ich habe einige Zeichenfolgen im Format xxh:yym, wobei xx für Stunden und yy für Minuten steht, etwa „05h:30m“.Was ist eine elegante Möglichkeit, einen String dieses Typs in TimeSpan zu konvertieren?
Lösung
Das scheint zu funktionieren, obwohl es etwas hackig ist:
TimeSpan span;
if (TimeSpan.TryParse("05h:30m".Replace("m","").Replace("h",""), out span))
MessageBox.Show(span.ToString());
Andere Tipps
DateTime.ParseExact
oder DateTime.TryParseExact
Hier können Sie das genaue Format der Eingabe angeben.Nachdem Sie das erhalten haben DateTime
, du kannst dir das schnappen DateTime.TimeOfDay
die ein TimeSpan
.
In Abwesenheit von TimeSpan.TryParseExact
, Ich denke, eine „elegante“ Lösung ist kein Thema.
@buyutec Wie Sie vermutet haben, würde diese Methode nicht funktionieren, wenn die Zeitspannen mehr als 24 Stunden betragen.
Hier ist eine Möglichkeit:
TimeSpan.Parse(s.Remove(2, 1).Remove(5, 1));
Und wenn Sie Ihren Code eleganter gestalten möchten, verwenden Sie eine Erweiterungsmethode:
public static TimeSpan ToTimeSpan(this string s)
{
TimeSpan t = TimeSpan.Parse(s.Remove(2, 1).Remove(5, 1));
return t;
}
Dann können Sie es tun
"05h:30m".ToTimeSpan();
Aus einem anderen Thread:
Sind TimeSpan.Parse Und TimeSpan.TryParse keine Optionen?Wenn Sie kein „genehmigtes“ Format verwenden, müssen Sie die Analyse manuell durchführen.Ich würde Ihre beiden Ganzzahlwerte wahrscheinlich in einem regulären Ausdruck erfassen und dann versuchen, sie in Ganzzahlen zu analysieren. Von dort aus können Sie mit seinem Konstruktor einen neuen TimeSpan erstellen.