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]

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

元素 DESCRIPTION
ws 可选空格。
- 一个用于表示负 TimeSpan 的可选减号。
d 天,范围为 0 到 10675199。
. 用于区分天与小时的文化敏感符号。 固定格式使用句点(“.”)字符。
HH 小时,范围为 0 到 23。
: 区分区域性的时间分隔符。 固定格式使用冒号 (":") 字符。
毫米 分钟,范围为 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]

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

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

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

TryParse(String, IFormatProvider, TimeSpan) 方法会通过使用由 input 指定的针对区域性的每种特定于区域性的格式来尝试解析 formatProvider

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

如果 formatProvidernull,则使用与当前区域性关联的 DateTimeFormatInfo 对象。

给调用方的说明

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

string value = "000000006";
TimeSpan interval;
if (TimeSpan.TryParse(value, out interval))
   Console.WriteLine($"{value} --> {interval}");
else
   Console.WriteLine($"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//
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'