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
定義されます。パラメーターには、次のいずれかを指定できます。
- CultureInfoパラメーターで書式設定が使用されるカルチャを
s
表すオブジェクト。 プロパティによって返されるオブジェクトは DateTimeFormatInfo 、 CultureInfo.DateTimeFormat で使用されるs
書式を定義します。 - で DateTimeFormatInfo 使用
s
される書式を定義するオブジェクト。 - カスタムの IFormatProvider 実装。 そのメソッドは IFormatProvider.GetFormat 、で DateTimeFormatInfo 使用
s
される書式を定義するオブジェクトを返します。
provider
が null
の場合は、現在のカルチャが使用されます。
現在のカレンダーの閏年の閏日の文字列表現の場合 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) すことによって作成されます。 |
タイム ゾーン情報が含まれていない場合s
、DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime)フラグが特に指定されていない限り、このメソッドはDateTimeKind.Unspecifiedプロパティを持つKind値をstyles
返DateTimeします。 タイム ゾーンまたはタイム ゾーン オフセット情報が含まれている場合 s
、メソッドは DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) 必要な時間変換を実行し、次のいずれかを返します。
- DateTime日付と時刻が現地時刻を反映し、プロパティKindが DateTimeKind.Local.
- または、フラグが含まれている場合
styles
は、DateTime日付と時刻が UTC を反映し、Kindプロパティが DateTimeKind.Utc.AdjustToUniversal
この動作は、フラグを使用して DateTimeStyles.RoundtripKind オーバーライドできます。
カスタム カルチャを解析する
カスタム カルチャ用に生成された日付と時刻の文字列を解析する場合は、メソッドの代わりにメソッドをTryParse使用TryParseExactして、解析操作が成功する確率を高めます。 カスタム カルチャの日付と時刻の文字列は、複雑で解析が困難な場合があります。 このメソッドは TryParse 、いくつかの暗黙的な解析パターンを持つ文字列の解析を試みますが、これらはすべて失敗する可能性があります。 これに対し、この TryParseExact メソッドでは、成功する可能性が高い 1 つ以上の正確な解析パターンを明示的に指定する必要があります。
カスタム カルチャの詳細については、クラスを System.Globalization.CultureAndRegionInfoBuilder 参照してください。
.NET