Share via


Metoda System.TimeSpan.Parse

Tento článek obsahuje doplňující poznámky k referenční dokumentaci pro toto rozhraní API.

Vstupní řetězec metod Parse obsahuje specifikaci časového intervalu ve formuláři:

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

Prvky v hranatých závorkách ([ a ]) jsou volitelné. Vyžaduje se jeden výběr ze seznamu alternativ uzavřených ve složených závorkách ({ a }) a oddělených svislými pruhy (|). Následující tabulka popisuje jednotlivé prvky.

Element (Prvek) Popis
Ws Volitelné prázdné místo.
- Volitelné znaménko minus, které označuje zápornou TimeSpan.
d Dny, od 0 do 10675199.
. Symbol závislý na jazykové verzi, který odděluje dny od hodin. Neutrální formát používá znak tečky (".").
hh Hodiny, od 0 do 23.
: Symbol oddělovače času zohledňující jazykovou verzi. Invariantní formát používá dvojtečku (":").
mm Minuty, od 0 do 59.
ss Volitelné sekundy, od 0 do 59.
. Symbol závislý na jazykové verzi, který odděluje sekundy od zlomků sekund. Neutrální formát používá znak tečky (".").
ff Volitelné sekundy ve zlomcích, obsahující jednu až sedm desítkových číslic.

Pokud vstupní řetězec není pouze hodnota dne, musí obsahovat hodiny a minutovou komponentu; ostatní komponenty jsou volitelné. Pokud jsou přítomny, musí hodnoty jednotlivých časových komponent spadat do zadaného rozsahu. Například hodnota hh, hodinová komponenta musí být v rozmezí od 0 do 23. Z tohoto důvodu, předání "23:00:00" metodě Parse vrátí časový interval 23 hodin. Na druhé straně vrátí předávání 24:00:00 časový interval 24 dní. Vzhledem k tomu, že hodnota "24" je mimo rozsah hodin, je interpretována jako součást dnů.

Komponenty vstupního řetězce musí souhrnně určovat časový interval, který je větší nebo roven TimeSpan.MinValue a menší než nebo rovno TimeSpan.MaxValue.

Metoda Parse(String) se pokusí analyzovat vstupní řetězec pomocí každého z formátů specifických pro jazykovou verzi pro aktuální jazykovou verzi.

Poznámky volajícím

Pokud součást časového intervalu v řetězci, která se má analyzovat, obsahuje více než sedm číslic, operace analýzy v rozhraní .NET Framework 3.5 a starších verzích se mohou chovat jinak než operace analýzy v rozhraní .NET Framework 4 a novějších verzích. V některých případech může analýza operací úspěšných v rozhraní .NET Framework 3.5 a starších verzích selhat a vyvolat OverflowException v rozhraní .NET Framework 4 a novější. V jiných případech může analýza operací, které vyvolají FormatException v rozhraní .NET Framework 3.5 a starších verzích, selhat a vyvolat OverflowException v rozhraní .NET Framework 4 a novější. Následující příklad znázorňuje oba scénáře.

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