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」 超出時數元件的範圍,所以它會解譯為 days 元件。
輸入字串的元件必須共同指定大於或等於 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