Condividi tramite


Metodo System.TimeSpan.Parse

Questo articolo fornisce osservazioni supplementari alla documentazione di riferimento per questa API.

La stringa di input per i Parse metodi contiene una specifica dell'intervallo di tempo nel formato:

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

Gli elementi tra parentesi quadre ([ e ]) sono facoltativi. È necessaria una selezione dall'elenco di alternative racchiuse tra parentesi graffe ({ e }) e separate da barre verticali (|). La tabella seguente descrive i singoli elementi.

Elemento Descrizione
ws Spazio vuoto facoltativo.
- Segno meno facoltativo, che indica un valore negativo TimeSpan.
d Giorni, compresi tra 0 e 10675199.
. Simbolo sensibile alle impostazioni cultura che separa i giorni dalle ore. Il formato invariante usa un carattere punto (".").
hh Ore, comprese tra 0 e 23.
: Simbolo separatore temporale sensibile alle impostazioni cultura. Il formato invariante usa un carattere due punti (":").
mm Minuti, compresi tra 0 e 59.
ss Secondi facoltativi, compresi tra 0 e 59.
. Simbolo sensibile alle impostazioni cultura che separa i secondi da frazioni di secondo. Il formato invariante usa un carattere punto (".").
ff Secondi frazionari facoltativi, costituiti da una a sette cifre decimali.

Se la stringa di input non è solo un valore di giorno, deve includere un componente ore e minuti; altri componenti sono facoltativi. Se sono presenti, i valori di ogni componente temporale devono rientrare in un intervallo specificato. Ad esempio, il valore di hh, il componente hours, deve essere compreso tra 0 e 23. Per questo motivo, il passaggio di "23:00:00" al Parse metodo restituisce un intervallo di tempo di 23 ore. D'altra parte, passando "24:00:00" restituisce un intervallo di tempo di 24 giorni. Poiché "24" non rientra nell'intervallo del componente ore, viene interpretato come componente giorni.

I componenti della stringa di input devono specificare collettivamente un intervallo di tempo maggiore o uguale a TimeSpan.MinValue e minore o uguale a TimeSpan.MaxValue.

Il Parse(String) metodo tenta di analizzare la stringa di input usando ognuno dei formati specifici delle impostazioni cultura per le impostazioni cultura correnti.

Note per i chiamanti

Quando un componente intervallo di tempo nella stringa da analizzare contiene più di sette cifre, le operazioni di analisi in .NET Framework 3.5 e versioni precedenti possono comportarsi in modo diverso rispetto alle operazioni di analisi in .NET Framework 4 e versioni successive. In alcuni casi, le operazioni di analisi riuscite in .NET Framework 3.5 e versioni precedenti potrebbero non riuscire e generare un'eccezione OverflowException in .NET Framework 4 e versioni successive. In altri casi, le operazioni di analisi che generano un'eccezione FormatException in .NET Framework 3.5 e versioni precedenti potrebbero non riuscire e generare un'eccezione OverflowException in .NET Framework 4 e versioni successive. Nell'esempio seguente vengono illustrati entrambi gli scenari.

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