System.TimeSpan.Parse 方法
本文提供了此 API 参考文档的补充说明。
方法的 Parse 输入字符串包含采用以下格式的时间间隔规范:
[ws][-]{ d | [d.]hh:mm[:ss[.ff]] }[ws]
方括号([
和 ]
)中的元素是可选的。 需要从大括号(和)括在大括号({
和 }
)的替代项列表中选择一个,并用垂直条(|)分隔。 下表对每个元素进行了描述。
元素 | 说明 |
---|---|
ws | 可选空格。 |
- | 一个可选的减号,指示负 TimeSpan号。 |
d | 天,范围为 0 到 10675199。 |
。 | 区分区域性的符号,用于将天数与小时分隔开来。 固定格式使用句点(“.”)字符。 |
hh | 小时,范围为 0 到 23。 |
: | 区分区域性的时间分隔符符号。 固定格式使用冒号 (“:”) 字符。 |
mm | 分钟,范围为 0 到 59。 |
ss | 可选秒,范围为 0 到 59。 |
. | 区分区域性的符号,用于将秒数与秒的小数部分分开。 固定格式使用句点(“.”)字符。 |
ff | 可选小数秒,由一到七位十进制数字组成。 |
如果输入字符串不是仅日期值,则它必须包含小时和分钟组件;其他组件是可选的。 如果存在它们,则每个时间组件的值必须位于指定的范围内。 例如,hh 的值(小时分量)必须介于 0 和 23 之间。 因此,将“23:00:00”传递给 Parse 该方法将返回 23 小时的时间间隔。 另一方面,传递“24:00:00”将返回 24 天的时间间隔。 由于“24”超出了小时分量的范围,因此将其解释为天分量。
输入字符串的组件必须统一指定大于或等于 TimeSpan.MinValue 且小于或等于的 TimeSpan.MaxValue时间间隔。
该方法 Parse(String) 尝试使用当前区域性的每个区域性特定格式分析输入字符串。
给呼叫者的备注
当要分析的字符串中的时间间隔组件包含七个以上的数字时,.NET Framework 3.5 和早期版本中分析操作的行为可能与 .NET Framework 4 及更高版本中分析操作的行为不同。 在某些情况下,在 .NET Framework 3.5 及更早版本中成功分析操作可能会失败,并在 .NET Framework 4 及更高版本中引发 OverflowException 。 在其他情况下,分析在 .NET Framework 3.5 及更低版本中引发 FormatException 的操作可能会失败,并在 .NET Framework 4 及更高版本中引发 OverflowException 。 以下示例说明了这两种方案。
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