System.TimeSpan.Parse-Methode

Dieser Artikel enthält ergänzende Hinweise zur Referenzdokumentation für diese API.

Die Eingabezeichenfolge für die Parse Methoden enthält eine Zeitintervallspezifikation im Formular:

[ws][-]{ d | [d.]hh:mm[:ss[.ff]] }[ws]

Elemente in eckigen Klammern ([ und ]) sind optional. Eine Auswahl aus der Liste der Alternativen, die in geschweifte Klammern ({ und }) eingeschlossen sind und durch vertikale Balken (|) getrennt sind, ist erforderlich. In der folgenden Tabelle wird jedes Element beschrieben.

Element Beschreibung
ws Optionaler Leerraum.
- Ein optionales Minuszeichen, das ein negatives TimeSpanangibt.
d Tage, von 0 bis 10675199.
. Ein kultursensibles Symbol, das Tage von Stunden trennt. Das invariante Format verwendet ein Punktzeichen (".")
hh Stunden von 0 bis 23.
: Das Kultursensitive Zeittrennzeichen. Das invariante Format verwendet ein Doppelpunkt (":") Zeichen.
mm Minuten zwischen 0 und 59.
ss Optionale Sekunden zwischen 0 und 59.
. Ein kulturempfindliches Symbol, das Sekunden von Bruchteilen einer Sekunde trennt. Das invariante Format verwendet ein Punktzeichen (".")
ff Optionale Bruchsekunden, die aus einer bis sieben Dezimalstellen bestehen.

Wenn die Eingabezeichenfolge nicht nur ein Tagwert ist, muss sie eine Stunden- und Minutenkomponente enthalten; Andere Komponenten sind optional. Wenn sie vorhanden sind, müssen die Werte der einzelnen Komponenten innerhalb eines angegebenen Bereichs liegen. Beispielsweise muss der Wert von hh, die Stundenkomponente, zwischen 0 und 23 sein. Aus diesem Gründen gibt die Übergabe von "23:00:00" an die Parse Methode ein Zeitintervall von 23 Stunden zurück. Andererseits gibt die Übergabe von "24:00:00" ein Zeitintervall von 24 Tagen zurück. Da sich "24" außerhalb des Bereichs der Stundenkomponente befindet, wird sie als Tagekomponente interpretiert.

Die Komponenten der Eingabezeichenfolge müssen gemeinsam ein Zeitintervall angeben, das größer oder gleich TimeSpan.MinValue und kleiner als oder gleich ist TimeSpan.MaxValue.

Die Parse(String) Methode versucht, die Eingabezeichenfolge mithilfe der einzelnen kulturspezifischen Formate für die aktuelle Kultur zu analysieren.

Hinweise für Anrufer

Wenn eine Zeitintervallkomponente in der zu analysierenden Zeichenfolge mehr als sieben Ziffern enthält, verhalten sich Analysevorgänge in .NET Framework 3.5 und früheren Versionen möglicherweise anders als analysevorgänge in .NET Framework 4 und höheren Versionen. In einigen Fällen können Analysevorgänge, die in .NET Framework 3.5 und früheren Versionen erfolgreich sind, fehlschlagen und in OverflowException .NET Framework 4 und höher auslösen. In anderen Fällen können Analysevorgänge, die in FormatException .NET Framework 3.5 und früheren Versionen auslösen, fehlschlagen und in OverflowException .NET Framework 4 und höher auslösen. Das folgende Beispiel veranschaulicht beide Szenarien.

string[] values = { "000000006", "12.12:12:12.12345678" };
foreach (string value in values)
{
   try {
      TimeSpan interval = TimeSpan.Parse(value);
      Console.WriteLine("{0} --> {1}", value, interval);
   }   
   catch (FormatException) {
      Console.WriteLine("{0}: Bad Format", value);
   }   
   catch (OverflowException) {
      Console.WriteLine("{0}: Overflow", value);
   }
}

// Output from .NET Framework 3.5 and earlier versions:
//       000000006 --> 6.00:00:00
//       12.12:12:12.12345678: Bad Format      
// Output from .NET Framework 4 and later versions or .NET Core:
//       000000006: Overflow
//       12.12:12:12.12345678: Overflow
open System

let values = [| "000000006"; "12.12:12:12.12345678" |]
for value in values do
    try
        let interval = TimeSpan.Parse value
        printfn $"{value} --> {interval}"   
    with
    | :? FormatException ->
        printfn $"{value}: Bad Format"
    | :? OverflowException ->
        printfn $"{value}: Overflow"

// Output from .NET Framework 3.5 and earlier versions:
//       000000006 --> 6.00:00:00
//       12.12:12:12.12345678: Bad Format      
// Output from .NET Framework 4 and later versions or .NET Core:
//       000000006: Overflow
//       12.12:12:12.12345678: Overflow
Dim values() As String = { "000000006", "12.12:12:12.12345678" }
For Each value As String In values
   Try
      Dim interval As TimeSpan = TimeSpan.Parse(value)
      Console.WriteLine("{0} --> {1}", value, interval)
   Catch e As FormatException
      Console.WriteLine("{0}: Bad Format", value)
   Catch e As OverflowException
      Console.WriteLine("{0}: Overflow", value)
   End Try         
Next
' Output from .NET Framework 3.5 and earlier versions:
'       000000006 --> 6.00:00:00
'       12.12:12:12.12345678: Bad Format      
' Output from .NET Framework 4:
'       000000006: Overflow
'       12.12:12:12.12345678: Overflow