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