Método System.TimeSpan.Parse
Este artigo fornece observações complementares à documentação de referência para essa API.
A cadeia de caracteres de entrada para os Parse métodos contém uma especificação de intervalo de tempo no formato:
[ws][-]{ d | [d.]hh:mm[:ss[.ff]] }[ws]
Os elementos entre colchetes ([
e ]
) são opcionais. É necessária uma seleção da lista de alternativas entre chaves ( e ) e }
separadas por barras verticais ({
|). A tabela a seguir descreve cada elemento.
Element | Descrição |
---|---|
ws | Espaço em branco opcional. |
- | Um sinal de subtração opcional, que indica um TimeSpan negativo. |
d | Dias, variando de 0 a 10675199. |
. | Um símbolo sensível à cultura que separa dias de horas. O formato invariável usa um caractere de ponto final ("."). |
hh | Horas, variando de 0 a 23. |
: | O símbolo separador de hora sensível à cultura. O formato invariante usa um caractere de dois pontos (":"). |
mm | Minutos, variando de 0 a 59. |
ss | Segundos opcionais, variando de 0 a 59. |
. | Um símbolo sensível à cultura que separa segundos de frações de um segundo. O formato invariável usa um caractere de ponto final ("."). |
ff | Segundos fracionários opcionais, consistindo em um a sete dígitos decimais. |
Se a cadeia de caracteres de entrada não for apenas um valor de dia, ela deverá incluir um componente de horas e minutos; outros componentes são opcionais. Se eles estiverem presentes, os valores de cada componente de tempo devem estar dentro de um intervalo especificado. Por exemplo, o valor de hh, o componente horas, deve estar entre 0 e 23. Devido a isso, passar "23:00:00" para o Parse método retorna um intervalo de tempo de 23 horas. Por outro lado, passar "24:00:00" retorna um intervalo de tempo de 24 dias. Como "24" está fora do intervalo do componente horas, ele é interpretado como o componente dias.
Os componentes da cadeia de caracteres de entrada devem especificar coletivamente um intervalo de tempo maior ou igual a e menor ou igual a TimeSpan.MinValueTimeSpan.MaxValue.
O Parse(String) método tenta analisar a cadeia de caracteres de entrada usando cada um dos formatos específicos de cultura para a cultura atual.
Notas aos chamadores
Quando um componente de intervalo de tempo na cadeia de caracteres a ser analisada contém mais de sete dígitos, as operações de análise no .NET Framework 3.5 e versões anteriores podem se comportar de forma diferente das operações de análise no .NET Framework 4 e versões posteriores. Em alguns casos, a análise de operações bem-sucedidas no .NET Framework 3.5 e versões anteriores pode falhar e lançar um OverflowException no .NET Framework 4 e posterior. Em outros casos, as operações de análise que lançam um no .NET Framework 3.5 e versões anteriores podem falhar e lançar um FormatExceptionOverflowException no .NET Framework 4 e posterior. O exemplo a seguir ilustra ambos os cenários.
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