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