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