System.TimeSpan.TryParse 方法

本文提供了此 API 参考文档的补充说明。

TryParse(System.String,System.TimeSpan@) 方法

该方法 TimeSpan.TryParse(String, TimeSpan) 与该方法类似 TimeSpan.Parse(String) ,只是转换失败时不会引发异常。

s 参数包含采用以下格式的时间间隔规范:

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

方括号 ([ and ]) 中的元素是可选的。 需要从大括号({ 和 })括起来的替代项列表中选择一个,并用垂直条(|)分隔。 下表对每个元素进行了描述。

元素 说明
ws 可选空格。
- 一个可选的减号,指示负 TimeSpan号。
d 天,范围为 0 到 10675199。
区分区域性的符号,用于将天数与小时分隔开来。 固定格式使用句点(“.”)字符。
hh 小时,范围为 0 到 23。
: 区分区域性的时间分隔符符号。 固定格式使用冒号 (“:”) 字符。
mm 分钟,范围为 0 到 59。
ss 可选秒,范围为 0 到 59。
区分区域性的符号,用于将秒数与秒的小数部分分开。 固定格式使用句点(“.”)字符。
ff 可选小数秒,由一到七位十进制数字组成。

s必须统一指定大于或等于TimeSpan.MinValue且小于或等于的TimeSpan.MaxValue时间间隔。

该方法 Parse(String) 尝试 s 使用当前区域性的每个区域性特定格式进行分析。

TryParse(String, IFormatProvider, TimeSpan) 方法

该方法 TryParse(String, IFormatProvider, TimeSpan) 与该方法类似 Parse(String, IFormatProvider) ,只是转换失败时不会引发异常。

input 参数包含采用以下格式的时间间隔规范:

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

方括号 ([ and ]) 中的元素是可选的。 需要从大括号({ 和 })括起来的替代项列表中选择一个,并用垂直条(|)分隔。 下表对每个元素进行了描述。

元素 说明
ws 可选空格。
- 一个可选的减号,指示负 TimeSpan号。
d 天,范围为 0 到 10675199。
区分区域性的符号,用于将天数与小时分隔开来。 固定格式使用句点(“.”)字符。
hh 小时,范围为 0 到 23。
: 区分区域性的时间分隔符符号。 固定格式使用冒号 (“:”) 字符。
mm 分钟,范围为 0 到 59。
ss 可选秒,范围为 0 到 59。
区分区域性的符号,用于将秒数与秒的小数部分分开。 固定格式使用句点(“.”)字符。
ff 可选小数秒,由一到七位十进制数字组成。

必须统一指定大于或等于TimeSpan.MinValue且小于或等于的TimeSpan.MaxValue时间间隔的组件input

该方法 TryParse(String, IFormatProvider, TimeSpan) 尝试 input 对指定的 formatProvider区域性使用每个区域性特定的格式进行分析。

参数 formatProvider 是一个 IFormatProvider 实现,提供有关返回字符串格式的区域性特定信息。 该 formatProvider 参数可以是以下任一参数:

null如果是formatProviderDateTimeFormatInfo则使用与当前区域性关联的对象。

给呼叫者的备注

在某些情况下,当要分析的字符串中的时间间隔组件包含七个以上的数字时,分析成功并在 .NET Framework 3.5 及更早版本中返回 true 的操作可能会失败,并在 .NET Framework 4 及更高版本中返回 false 。 以下示例演示了此方案:

string value = "000000006";
TimeSpan interval;
if (TimeSpan.TryParse(value, out interval))
   Console.WriteLine("{0} --> {1}", value, interval);
else
   Console.WriteLine("Unable to parse '{0}'", value);
   
// Output from .NET Framework 3.5 and earlier versions:
//       000000006 --> 6.00:00:00
// Output from .NET Framework 4:
//       Unable to parse //000000006//
let value = "000000006"
match TimeSpan.TryParse value with
| true, interval ->
    printfn $"{value} --> {interval}"
| _ ->
    printfn $"Unable to parse '{value}'"
    
// Output from .NET Framework 3.5 and earlier versions:
//       000000006 --> 6.00:00:00
// Output from .NET Framework 4:
//       Unable to parse //000000006//
Dim value As String = "000000006"
Dim interval As TimeSpan
If TimeSpan.TryParse(value, interval) Then
   Console.WriteLine("{0} --> {1}", value, interval)
Else
   Console.WriteLine("Unable to parse '{0}'", value)
End If
' Output from .NET Framework 3.5 and earlier versions:
'       000000006 --> 6.00:00:00
' Output from .NET Framework 4:
'       Unable to parse '000000006'