Dela via


System.TimeSpan.Parse-metod

Den här artikeln innehåller ytterligare kommentarer till referensdokumentationen för det här API:et.

Indatasträngen Parse till metoderna innehåller en tidsintervallspecifikation i formuläret:

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

Element inom hakparenteser ([ och ]) är valfria. Ett alternativ från listan, omslutna i klammerparenteser ({ och }) och separerade med lodräta streck (|), måste väljas. I följande tabell beskrivs varje element.

Komponent Beskrivning
Ws Valfritt blanksteg.
- Ett valfritt minustecken som anger ett negativt TimeSpan.
d Dagar, från 0 till 10675199.
. En kulturkänslig symbol som skiljer dagar från timmar. Det invarianta formatet använder ett punkttecken (".").
Hh Timmar, från 0 till 23.
: Symbolen för kulturkänslig tidsavgränsare. Det invarianta formatet använder ett kolontecken (":").
mm Minuter, från 0 till 59.
ß Valfria sekunder, mellan 0 och 59.
. En kulturkänslig symbol som skiljer sekunder från bråkdelar av en sekund. Det invarianta formatet använder ett punkttecken (".").
ff Valfria bråksekunder som består av en till sju decimaler.

Om indatasträngen inte bara är ett dagvärde måste den innehålla en komponent för timmar och minuter. andra komponenter är valfria. Om de finns måste värdena för varje tidskomponent ligga inom ett angivet intervall. Till exempel måste värdet för hh, timkomponenten, vara mellan 0 och 23. När man skickar "23:00:00" till metoden Parse returneras ett tidsintervall på 23 timmar. Å andra sidan returnerar "24:00:00" ett tidsintervall på 24 dagar. Eftersom "24" ligger utanför intervallet för timkomponenten tolkas det som dagskomponenten.

Komponenterna i indatasträngen måste tillsammans ange ett tidsintervall som är större än eller lika TimeSpan.MinValue med och mindre än eller lika med TimeSpan.MaxValue.

Metoden Parse(String) försöker parsa indatasträngen med var och en av de kulturspecifika formaten för den aktuella kulturen.

Anteckningar till uppringare

När en tidsintervallkomponent i strängen som ska parsas innehåller mer än sju siffror kan parsningsåtgärder i .NET Framework 3.5 och tidigare versioner fungera annorlunda än parsningsåtgärder i .NET Framework 4 och senare versioner. I vissa fall kan parsningsåtgärder som lyckas i .NET Framework 3.5 och tidigare versioner misslyckas och utlösa en OverflowException i .NET Framework 4 och senare. I andra fall kan parsningsåtgärder som genererar en FormatException i .NET Framework 3.5 och tidigare versioner misslyckas och genererar en OverflowException i .NET Framework 4 och senare. I följande exempel visas båda scenarierna.

string[] values = { "000000006", "12.12:12:12.12345678" };
foreach (string value in values)
{
   try {
      TimeSpan interval = TimeSpan.Parse(value);
      Console.WriteLine($"{value} --> {interval}");
   }   
   catch (FormatException) {
      Console.WriteLine($"{value}: Bad Format");
   }   
   catch (OverflowException) {
      Console.WriteLine($"{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
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