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までの日数。
. 日と時間を区切るカルチャに依存するシンボル。 インバリアント形式では、ピリオド (".") 文字が使用されます。
hh 0 から 23 までの時間。
: カルチャに依存する時刻区切り記号。 インバリアント形式では、コロン (":") 文字が使用されます。
mm 分 (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までの日数。
. 日と時間を区切るカルチャに依存するシンボル。 インバリアント形式では、ピリオド (".") 文字が使用されます。
hh 0 から 23 までの時間。
: カルチャに依存する時刻区切り記号。 インバリアント形式では、コロン (":") 文字が使用されます。
mm 分 (0 ~ 59)。
ss 0 ~ 59 の範囲の省略可能な秒。
. 秒を秒の分数から区切るカルチャに依存するシンボル。 インバリアント形式では、ピリオド (".") 文字が使用されます。
ff 1 ~ 7 桁の 10 進数で構成される、省略可能な秒の小数部。

input構成要素は、以下の時間間隔TimeSpan.MinValueTimeSpan.MaxValueをまとめて指定する必要があります。

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

この 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("{0} --> {1}", value, interval);
else
   Console.WriteLine("Unable to parse '{0}'", 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'