共用方式為


System.TimeSpan.Parse 方法

本文提供此 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