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?

War es hilfreich?

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();

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top