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]

角かっこ ([ と ]) の要素は省略可能です。 中かっこ ({ と }) で囲まれ、縦棒 (|) で区切られた候補一覧から 1 つを選択する必要があります。 次の表は、それぞれの要素の説明です。

要素 説明
ws 省略可能な空白。
- 負の TimeSpanを示す省略可能な負符号。
d 0 から10675199までの日数。
. 日と時間を区切る文化に配慮したシンボル。 インバリアント形式では、ピリオド (".") 文字が使用されます。
はあ 0 から 23 までの時間。
: カルチャに依存する時刻区切り記号。 インバリアント形式では、コロン (":") 文字が使用されます。
ミリメートル 分 (0 から 59 まで)。
ss 0 ~ 59 の範囲の省略可能な秒。
. 秒と秒の分数を区切る、文化に依存するシンボル。 インバリアント形式では、ピリオド (".") 文字が使用されます。
ff 1 から 7 桁の 10 進数で表される、省略可能な秒の小数部分。

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]

角かっこ ([ と ]) の要素は省略可能です。 中かっこ ({ と }) で囲まれ、縦棒 (|) で区切られた候補一覧から 1 つを選択する必要があります。 次の表は、それぞれの要素の説明です。

要素 説明
ws 省略可能な空白。
- 負の TimeSpanを示す省略可能な負符号。
d 0 から10675199までの日数。
. 日と時間を区切る文化に配慮したシンボル。 インバリアント形式では、ピリオド (".") 文字が使用されます。
はあ 0 から 23 までの時間。
: カルチャに依存する時刻区切り記号。 インバリアント形式では、コロン (":") 文字が使用されます。
ミリメートル 分 (0 から 59 まで)。
ss 0 ~ 59 の範囲の省略可能な秒。
. 秒と秒の分数を区切る、文化に依存するシンボル。 インバリアント形式では、ピリオド (".") 文字が使用されます。
ff 1 から 7 桁の 10 進数で表される、省略可能な秒の小数部分。

inputのコンポーネントでは、TimeSpan.MinValue以上、TimeSpan.MaxValue以下の時間間隔をまとめて指定する必要があります。

TryParse(String, IFormatProvider, TimeSpan) メソッドは、inputで指定されたカルチャのカルチャ固有の各形式を使用して、formatProviderの解析を試みます。

formatProvider パラメーターは、返される文字列の形式に関するカルチャ固有の情報を提供するIFormatProvider実装です。 formatProvider パラメーターには、次のいずれかを指定できます。

formatProvidernullされている場合は、現在のカルチャに関連付けられているDateTimeFormatInfo オブジェクトが使用されます。

呼び出し側への注意

場合によっては、解析される文字列内の時間間隔コンポーネントに 7 桁を超える数字が含まれている場合、.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'