Udostępnij za pośrednictwem


System.TimeSpan.Parse, metoda

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 pionowymi słupkami (|) jest wymagany. W tabeli poniżej opisano każdy element.

Element opis
Ws Opcjonalny odstęp.
- Opcjonalny znak minus, który wskazuje ujemny TimeSpanznak .
d Dni w zakresie od 0 do 10675199.
. Specyficzny dla kultury symbol oddzielający dni od godzin. Format niezmienny wykorzystuje znak kropki („.”).
hh Godziny w zakresie od 0 do 23.
: Symbol separatora godzin specyficzny dla kultury. Niezmienny format używa znaku dwukropka (":").
mm Minuty w zakresie od 0 do 59.
ss Opcjonalna wartość sekund w zakresie od 0 do 59.
. Specyficzny dla kultury symbol oddzielający sekundy od ułamków sekund. Format niezmienny wykorzystuje znak kropki („.”).
ff Opcjonalna wartość ułamkowa sekund zawierająca od jednej do siedmiu cyfr po separatorze dziesiętnym.

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 przy użyciu każdego z formatów specyficznych dla kultury 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 programie .NET Framework 3.5 i starszych wersjach, mogą zakończyć się niepowodzeniem i zgłosić w programie .NET Framework 4 lub nowszym OverflowException . 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("{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