Udostępnij przez


Metoda System.TimeSpan.Parse

Ten artykuł zawiera dodatkowe uwagi dotyczące dokumentacji referencyjnej dla tego interfejsu API.

Ciąg wejściowy metod Parse zawiera specyfikację interwału czasu w formularzu:

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

Elementy w nawiasach kwadratowych ([ i ]) są opcjonalne. Jeden wybór z listy alternatyw ujęty w nawiasy klamrowe ({ i }) i oddzielony kreskami pionowymi (|) jest konieczny. W tabeli poniżej opisano każdy element.

Składnik Opis
Ws Opcjonalne białe znaki.
- Opcjonalny znak minus, który wskazuje, że TimeSpan jest ujemny.
d Dni, od 0 do 10675199.
. Symbol wrażliwy na kulturę, który oddziela dni od godzin. Niezmienny format używa znaku kropki (".").
Gg Godziny, od 0 do 23.
: Symbol separatora czasu dostosowany do kultury. Niezmienny format używa znaku dwukropka (":").
Mm Minuty, od 0 do 59.
ß Opcjonalne sekundy, od 0 do 59.
. Symbol wrażliwy na kulturę, który oddziela sekundy od ułamków sekundy. Niezmienny format używa znaku kropki (".").
Ff Opcjonalne sekundy ułamkowe składające się z jednej do siedmiu cyfr dziesiętnych.

Jeśli ciąg wejściowy nie jest tylko wartością dnia, musi zawierać godziny i składnik minut; inne składniki są opcjonalne. Jeśli są obecne, wartości każdego składnika czasu muszą należeć do określonego zakresu. Na przykład wartość hh, składnik hours musi należeć do przedziału od 0 do 23. W związku z tym przekazanie wartości "23:00:00" do Parse metody zwraca przedział czasu wynoszący 23 godziny. Z drugiej strony przekazanie wartości "24:00:00" zwraca przedział czasu wynoszący 24 dni. Ponieważ "24" znajduje się poza zakresem składnika hours, jest interpretowany jako składnik days.

Składniki ciągu wejściowego muszą zbiorczo określać interwał czasu większy lub równy TimeSpan.MinValue lub mniejszy niż lub równy TimeSpan.MaxValue.

Metoda Parse(String) próbuje przeanalizować ciąg wejściowy, używając każdego z formatów specyficznych dla bieżącej kultury.

Uwagi do osób wywołujących

Gdy składnik interwału czasu w ciągu, który ma być analizowany, zawiera więcej niż siedem cyfr, analizowanie operacji w programie .NET Framework 3.5 i starszych wersjach może zachowywać się inaczej niż operacje analizowania w programie .NET Framework 4 i nowszych wersjach. W niektórych przypadkach operacje analizowania, które kończą się powodzeniem w programie .NET Framework 3.5 i starszych wersjach, mogą zakończyć się niepowodzeniem i zgłosić w programie .NET Framework 4 lub nowszym OverflowException . W innych przypadkach operacje analizowania, które zgłaszają FormatException w .NET Framework 3.5 i wcześniejszych wersjach, mogą zakończyć się niepowodzeniem i zgłosić OverflowException w .NET Framework 4 lub nowszych. Poniższy przykład ilustruje oba scenariusze.

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