System.DateTime.TryParse メソッド

この記事では、この API のリファレンス ドキュメントへの補足的な解説を提供します。

このメソッドは DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) 、日付、時刻、タイム ゾーンの情報を含むことができる文字列を解析します。 メソッドに似ていますが、変換が DateTime.Parse(String, IFormatProvider, DateTimeStyles) 失敗した場合に DateTime.TryParse(String, DateTime) メソッドが例外をスローしない点が異なります。

このメソッドは、認識されないデータを無視し、入力文字列 (s) を完全に解析しようとします。 時刻が含まれているが日付が含まれている場合s、メソッドは既定で現在の日付を置き換えるか、フラグがNoCurrentDateDefault含まれている場合stylesは置き換えるDateTime.Date.MinValue。 日付が含まれているが時刻がない場合 s は、午前 12 時が既定の時刻として使用されます。 日付が存在するが、その年のコンポーネントが 2 桁の数字のみで構成されている場合は、プロパティの値に基づいて、パラメーターの現在のCalendar.TwoDigitYearMaxカレンダーのprovider年に変換されます。 先頭、内側、または末尾の s 空白文字は無視されます。 日付と時刻は、先頭と末尾の NU MB (メガバイト)ER SIGN 文字 ('#'、U+0023) のペアで角かっこで囲み、1 つ以上の NULL 文字 (U+0000) で追跡できます。

日付と時刻の要素に固有の有効な形式、および日付と時刻で使用される名前と記号は、パラメーターによって provider 定義されます。パラメーターには、次のいずれかを指定できます。

providernull の場合は、現在のカルチャが使用されます。

現在のカレンダーの閏年の閏日の文字列表現の場合 s 、メソッドは正常に解析されます s 。 現在のカレンダーの閏年以外の閏年の閏日のprovider文字列表現の場合s、解析操作は失敗し、メソッドは返しますfalse

パラメーターは styles 、解析された文字列の正確な解釈と、解析操作で処理する方法を定義します。 次の表に示すように、列挙体の DateTimeStyles 1 つ以上のメンバーを指定できます。

DateTimeStyles メンバー 説明
AdjustToUniversal s解析し、必要に応じて UTC に変換します。 タイム ゾーン オフセットが含まれている場合s、またはタイム ゾーン情報が含まれているがフラグがstyles含まれているDateTimeStyles.AssumeLocal場合s、メソッドは文字列を解析し、返されたDateTime値を UTC に変換する呼び出しToUniversalTimeを行い、プロパティを KindDateTimeKind.Utc. s UTC を表す場合、またはタイム ゾーン情報が含まれていないがフラグがstyles含まれているDateTimeStyles.AssumeUniversal場合s、メソッドは文字列を解析し、返されたDateTime値に対してタイム ゾーン変換を実行せず、プロパティを KindDateTimeKind.Utc. それ以外の場合は、フラグは無効です。
AllowInnerWhite 有効ですが、この値は無視されます。 の日付と時刻の要素 sでは、内側の空白を使用できます。
AllowLeadingWhite 有効ですが、この値は無視されます。 の日付と時刻の要素 sで先頭の空白を使用できます。
AllowTrailingWhite 有効ですが、この値は無視されます。 の日付と時刻の要素 sでは、末尾の空白を使用できます。
AllowWhiteSpaces 先頭、内側、末尾の s 空白を含めることができます。 これが既定の動作です。 次のようなDateTimeStyles.Noneより制限の厳しいDateTimeStyles列挙値を指定してオーバーライドすることはできません。
AssumeLocal タイム ゾーン情報がない場合 s は、現地時刻を表すと見なされることを指定します。 フラグが DateTimeStyles.AdjustToUniversal 存在しない限り、 Kind 戻り DateTime 値のプロパティは DateTimeKind.Local.
AssumeUniversal タイム ゾーン情報がない場合 s は、UTC を表すと見なされることを指定します。 フラグが DateTimeStyles.AdjustToUniversal 存在しない限り、メソッドは返された DateTime 値を UTC から現地時刻に変換し、そのプロパティを KindDateTimeKind.Local.
None 有効ですが、この値は無視されます。
RoundtripKind タイム ゾーン情報を含む文字列の場合は、日付と時刻の文字列を、そのKindプロパティが設定された値にDateTimeDateTimeKind.Local変換しないようにします。 通常、このような文字列は、"o"、"r"、または "u" 標準書式指定子を使用してメソッドを呼び出 DateTime.ToString(String) すことによって作成されます。

タイム ゾーン情報が含まれていない場合sDateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime)フラグが特に指定されていない限り、このメソッドはDateTimeKind.Unspecifiedプロパティを持つKind値をstylesDateTimeします。 タイム ゾーンまたはタイム ゾーン オフセット情報が含まれている場合 s 、メソッドは DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) 必要な時間変換を実行し、次のいずれかを返します。

この動作は、フラグを使用して DateTimeStyles.RoundtripKind オーバーライドできます。

カスタム カルチャを解析する

カスタム カルチャ用に生成された日付と時刻の文字列を解析する場合は、メソッドの代わりにメソッドをTryParse使用TryParseExactして、解析操作が成功する確率を高めます。 カスタム カルチャの日付と時刻の文字列は、複雑で解析が困難な場合があります。 このメソッドは TryParse 、いくつかの暗黙的な解析パターンを持つ文字列の解析を試みますが、これらはすべて失敗する可能性があります。 これに対し、この TryParseExact メソッドでは、成功する可能性が高い 1 つ以上の正確な解析パターンを明示的に指定する必要があります。

カスタム カルチャの詳細については、クラスを System.Globalization.CultureAndRegionInfoBuilder 参照してください。