本文提供此 API 參考文件的補充備註。
Parse 方法的輸入字串包含一個以格式表示的時間間隔規格:
[ws][-]{ d | [d.]hh:mm[:ss[.ff]] }[ws]
方括弧中的元素([ 和 ])是選擇性的。 必須從大括弧({ 和 })括住的選項清單中選取一個,並以垂直線分隔(|)。 下表說明每個元素。
| 元素 | 說明 |
|---|---|
| ws | 選擇性的空格符。 |
| - | 選擇性減號,表示負數 TimeSpan。 |
| d | 天,範圍從 0 到 10675199。 |
| . | 區分文化特性的符號,分隔天數與小時。 不變異格式會使用句號 (“.”) 字元。 |
| hh | 小時,範圍從 0 到 23。 |
| : | 文化敏感的時間分隔符符號。 不變異格式會使用冒號 (“:”) 字元。 |
| 毫米 | 分鐘,範圍從 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($"{value} --> {interval}");
}
catch (FormatException) {
Console.WriteLine($"{value}: Bad Format");
}
catch (OverflowException) {
Console.WriteLine($"{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
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