DateTime.TryParseExact メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定した文字列形式の日付と時刻を等価の DateTime の値に変換します。 文字列形式の書式は、指定した書式と完全に一致する必要があります。 このメソッドは、変換に成功したかどうかを示す値を返します。
オーバーロード
TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime) |
指定した書式、カルチャ固有の書式情報、スタイルを使用して、指定した日付と時刻のスパン表現を、それと等価な DateTime に変換します。 文字列形式の書式は、指定した書式と完全に一致する必要があります。 このメソッドは、変換に成功したかどうかを示す値を返します。 |
TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTime) |
指定した日付と時刻の文字スパンを、それと等価な DateTime に変換し、変換が成功したかどうかを示す値を返します。 |
TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) |
指定した書式、カルチャ固有の書式情報、およびスタイルを使用して、指定した日付と時刻の文字列形式を等価の DateTime に変換します。 文字列形式の書式は、指定した書式と完全に一致する必要があります。 このメソッドは、変換に成功したかどうかを示す値を返します。 |
TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) |
指定した書式の配列、カルチャ固有の書式情報、およびスタイルを使用して、指定した日付と時刻の文字列形式を等価の DateTime に変換します。 文字列形式の書式は、指定した書式の少なくとも 1 つと完全に一致する必要があります。 このメソッドは、変換に成功したかどうかを示す値を返します。 |
注釈
重要
和暦の時代 (年号) は天皇の代に基づいているため、変更されることが予想されます。 たとえば、JapaneseCalendar と JapaneseLunisolarCalendar において、2019 年 5 月 1 日から令和時代が始まることになりました。 このような時代 (年号) の変更は、これらのカレンダーを使用するすべてのアプリケーションに影響します。 詳細と、アプリケーションが影響を受けるかどうかを判断するには、「 .NET での日本語カレンダーでの新しい時代 (年号の処理)」を参照してください。 Windows システムでアプリケーションをテストして時代 (年号) の変更に対する準備を確認する方法については、「 日本の時代 (年号) の変更に備える」を参照してください。 複数の時代 (年号) を含むカレンダーをサポートする .NET の機能と、複数の時代 (年号) をサポートするカレンダーを使用する場合のベスト プラクティスについては、「 年号の使用」を参照してください。
TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime)
指定した書式、カルチャ固有の書式情報、スタイルを使用して、指定した日付と時刻のスパン表現を、それと等価な DateTime に変換します。 文字列形式の書式は、指定した書式と完全に一致する必要があります。 このメソッドは、変換に成功したかどうかを示す値を返します。
public:
static bool TryParseExact(ReadOnlySpan<char> s, ReadOnlySpan<char> format, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParseExact (ReadOnlySpan<char> s, ReadOnlySpan<char> format, IFormatProvider? provider, System.Globalization.DateTimeStyles style, out DateTime result);
public static bool TryParseExact (ReadOnlySpan<char> s, ReadOnlySpan<char> format, IFormatProvider provider, System.Globalization.DateTimeStyles style, out DateTime result);
static member TryParseExact : ReadOnlySpan<char> * ReadOnlySpan<char> * IFormatProvider * System.Globalization.DateTimeStyles * DateTime -> bool
Public Shared Function TryParseExact (s As ReadOnlySpan(Of Char), format As ReadOnlySpan(Of Char), provider As IFormatProvider, style As DateTimeStyles, ByRef result As DateTime) As Boolean
パラメーター
- s
- ReadOnlySpan<Char>
変換する日付と時刻を表す文字を含むスパン。
- format
- ReadOnlySpan<Char>
s
に必要な書式。
- provider
- IFormatProvider
s
に関するカルチャ固有の書式情報を提供するオブジェクト。
- style
- DateTimeStyles
s
の許可された書式を示す 1 つまたは複数の列挙値のビットごとの組み合わせ。
- result
- DateTime
このメソッドから制御が戻るときに、 に含まれる日付と時刻に相当する値が格納DateTimes
されます (変換が成功した場合は )。 変換に失敗した場合は DateTime.MinValue が格納されます。 s
パラメーターまたは format
パラメーターが null
の場合、空の文字列の場合、あるいは format
に指定されたパターンに一致する日時が含まれていない場合、変換は失敗します。 このパラメーターは初期化せずに渡されます。
戻り値
s
が正常に変換された場合は true
。それ以外の場合は false
。
適用対象
TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTime)
指定した日付と時刻の文字スパンを、それと等価な DateTime に変換し、変換が成功したかどうかを示す値を返します。
public:
static bool TryParseExact(ReadOnlySpan<char> s, cli::array <System::String ^> ^ formats, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParseExact (ReadOnlySpan<char> s, string?[]? formats, IFormatProvider? provider, System.Globalization.DateTimeStyles style, out DateTime result);
public static bool TryParseExact (ReadOnlySpan<char> s, string[] formats, IFormatProvider provider, System.Globalization.DateTimeStyles style, out DateTime result);
static member TryParseExact : ReadOnlySpan<char> * string[] * IFormatProvider * System.Globalization.DateTimeStyles * DateTime -> bool
Public Shared Function TryParseExact (s As ReadOnlySpan(Of Char), formats As String(), provider As IFormatProvider, style As DateTimeStyles, ByRef result As DateTime) As Boolean
パラメーター
- s
- ReadOnlySpan<Char>
解析する文字列を含むスパン。
- formats
- String[]
s
の許可された形式の配列。
- provider
- IFormatProvider
s
に関するカルチャ固有の書式情報を提供するオブジェクト。
- style
- DateTimeStyles
現在のタイム ゾーンまたは現在の日付と関連させて、解析された日付をどのように解釈するかを定義する列挙値のビットごとの組み合わせ。 通常指定する値は、None です。
- result
- DateTime
このメソッドから制御が戻るときに、 に含まれる日付と時刻に相当する値が格納DateTimes
されます (変換が成功した場合は )。 変換に失敗した場合は DateTime.MinValue が格納されます。 s
パラメーターが null
か、Empty である場合、または日付と時刻を表す有効な文字列表現が含まれない場合、変換に失敗します。 このパラメーターは初期化せずに渡されます。
戻り値
s
パラメーターが正常に変換された場合は true
。それ以外の場合は false
。
適用対象
TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)
指定した書式、カルチャ固有の書式情報、およびスタイルを使用して、指定した日付と時刻の文字列形式を等価の DateTime に変換します。 文字列形式の書式は、指定した書式と完全に一致する必要があります。 このメソッドは、変換に成功したかどうかを示す値を返します。
public:
static bool TryParseExact(System::String ^ s, System::String ^ format, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParseExact (string s, string format, IFormatProvider provider, System.Globalization.DateTimeStyles style, out DateTime result);
public static bool TryParseExact (string? s, string? format, IFormatProvider? provider, System.Globalization.DateTimeStyles style, out DateTime result);
static member TryParseExact : string * string * IFormatProvider * System.Globalization.DateTimeStyles * DateTime -> bool
Public Shared Function TryParseExact (s As String, format As String, provider As IFormatProvider, style As DateTimeStyles, ByRef result As DateTime) As Boolean
パラメーター
- s
- String
変換する日付と時刻を格納した文字列。
- format
- String
s
に必要な書式。
- provider
- IFormatProvider
s
に関するカルチャ固有の書式情報を提供するオブジェクト。
- style
- DateTimeStyles
s
の許可された書式を示す 1 つまたは複数の列挙値のビットごとの組み合わせ。
- result
- DateTime
このメソッドから制御が戻るときに、 に含まれる日付と時刻に相当する値が格納DateTimes
されます (変換が成功した場合は )。 変換に失敗した場合は DateTime.MinValue が格納されます。 s
パラメーターまたは format
パラメーターが null
の場合、空の文字列の場合、あるいは format
に指定されたパターンに一致する日時が含まれていない場合、変換は失敗します。 このパラメーターは初期化せずに渡されます。
戻り値
s
が正常に変換された場合は true
。それ以外の場合は false
。
例外
styles
は有効な DateTimeStyles 値ではありません。
または
styles
に DateTimeStyles 値の正しくない組み合わせが含まれています (たとえば、AssumeLocal と AssumeUniversal の両方などです)。
例
DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)メソッドの例を次に示します。 では先頭のスペースが許可format
されないため、パラメーターが 等しいDateTimeStyles.None場合styles
、文字列 "5/01/2009 8:30 AM" は正常に解析されないことに注意してください。 さらに、文字列 "5/01/2009 09:00" は、"MM/dd/yyyyhh:mm" の で正常に format
解析できません。日付文字列は、必要に応じて format
先頭の 0 の月番号の前にないためです。
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
CultureInfo enUS = new CultureInfo("en-US");
string dateString;
DateTime dateValue;
// Parse date with no style flags.
dateString = " 5/01/2009 8:30 AM";
if (DateTime.TryParseExact(dateString, "g", enUS,
DateTimeStyles.None, out dateValue))
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
// Allow a leading space in the date string.
if (DateTime.TryParseExact(dateString, "g", enUS,
DateTimeStyles.AllowLeadingWhite, out dateValue))
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
// Use custom formats with M and MM.
dateString = "5/01/2009 09:00";
if (DateTime.TryParseExact(dateString, "M/dd/yyyy hh:mm", enUS,
DateTimeStyles.None, out dateValue))
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
// Allow a leading space in the date string.
if (DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm", enUS,
DateTimeStyles.None, out dateValue))
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
// Parse a string with time zone information.
dateString = "05/01/2009 01:30:42 PM -05:00";
if (DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS,
DateTimeStyles.None, out dateValue))
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
// Allow a leading space in the date string.
if (DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS,
DateTimeStyles.AdjustToUniversal, out dateValue))
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
// Parse a string representing UTC.
dateString = "2008-06-11T16:11:20.0904778Z";
if (DateTime.TryParseExact(dateString, "o", CultureInfo.InvariantCulture,
DateTimeStyles.None, out dateValue))
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
if (DateTime.TryParseExact(dateString, "o", CultureInfo.InvariantCulture,
DateTimeStyles.RoundtripKind, out dateValue))
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
dateValue.Kind);
else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
}
}
// The example displays the following output:
// ' 5/01/2009 8:30 AM' is not in an acceptable format.
// Converted ' 5/01/2009 8:30 AM' to 5/1/2009 8:30:00 AM (Unspecified).
// Converted '5/01/2009 09:00' to 5/1/2009 9:00:00 AM (Unspecified).
// '5/01/2009 09:00' is not in an acceptable format.
// Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 11:30:42 AM (Local).
// Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 6:30:42 PM (Utc).
// Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 9:11:20 AM (Local).
// Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 4:11:20 PM (Utc).
open System
open System.Globalization
[<EntryPoint>]
let main _ =
let enUS = CultureInfo "en-US"
// Parse date with no style flags.
let dateString = " 5/01/2009 8:30 AM"
match DateTime.TryParseExact(dateString, "g", enUS, DateTimeStyles.None) with
| true, dateValue ->
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
| _ ->
printfn $"'{dateString}' is not in an acceptable format."
// Allow a leading space in the date string.
match DateTime.TryParseExact(dateString, "g", enUS, DateTimeStyles.AllowLeadingWhite) with
| true, dateValue ->
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
| _ ->
printfn $"'{dateString}' is not in an acceptable format."
// Use custom formats with M and MM.
let dateString = "5/01/2009 09:00"
match DateTime.TryParseExact(dateString, "M/dd/yyyy hh:mm", enUS, DateTimeStyles.None) with
| true, dateValue ->
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
| _ ->
printfn $"'{dateString}' is not in an acceptable format."
// Allow a leading space in the date string.
match DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm", enUS, DateTimeStyles.None) with
| true, dateValue ->
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
| _ ->
printfn $"'{dateString}' is not in an acceptable format."
// Parse a string with time zone information.
let dateString = "05/01/2009 01:30:42 PM -05:00"
match DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, DateTimeStyles.None) with
| true, dateValue ->
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
| _ ->
printfn $"'{dateString}' is not in an acceptable format."
// Allow a leading space in the date string.
match DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, DateTimeStyles.AdjustToUniversal) with
| true, dateValue ->
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
| _ ->
printfn $"'{dateString}' is not in an acceptable format."
// Parse a string representing UTC.
let dateString = "2008-06-11T16:11:20.0904778Z"
match DateTime.TryParseExact(dateString, "o", CultureInfo.InvariantCulture, DateTimeStyles.None) with
| true, dateValue ->
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
| _ ->
printfn $"'{dateString}' is not in an acceptable format."
match DateTime.TryParseExact(dateString, "o", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind) with
| true, dateValue ->
printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
| _ ->
printfn $"'{dateString}' is not in an acceptable format."
0
// The example displays the following output:
// ' 5/01/2009 8:30 AM' is not in an acceptable format.
// Converted ' 5/01/2009 8:30 AM' to 5/1/2009 8:30:00 AM (Unspecified).
// Converted '5/01/2009 09:00' to 5/1/2009 9:00:00 AM (Unspecified).
// '5/01/2009 09:00' is not in an acceptable format.
// Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 11:30:42 AM (Local).
// Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 6:30:42 PM (Utc).
// Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 9:11:20 AM (Local).
// Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 4:11:20 PM (Utc).
Imports System.Globalization
Public Module Example
Public Sub Main()
Dim enUS As New CultureInfo("en-US")
Dim dateString As String
Dim dateValue As Date
' Parse date with no style flags.
dateString = " 5/01/2009 8:30 AM"
If Date.TryParseExact(dateString, "g", enUS, _
DateTimeStyles.None, dateValue) Then
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End If
' Allow a leading space in the date string.
If Date.TryParseExact(dateString, "g", enUS, _
DateTimeStyles.AllowLeadingWhite, dateValue) Then
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End If
' Use custom formats with M and MM.
dateString = "5/01/2009 09:00"
If Date.TryParseExact(dateString, "M/dd/yyyy hh:mm", enUS, _
DateTimeStyles.None, dateValue) Then
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End If
' Allow a leading space in the date string.
If Date.TryParseExact(dateString, "MM/dd/yyyy hh:mm", enUS, _
DateTimeStyles.None, dateValue) Then
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End If
' Parse a string with time zone information.
dateString = "05/01/2009 01:30:42 PM -05:00"
If Date.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, _
DateTimeStyles.None, dateValue) Then
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End If
' Allow a leading space in the date string.
If Date.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, _
DateTimeStyles.AdjustToUniversal, dateValue) Then
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End If
' Parse a string representing UTC.
dateString = "2008-06-11T16:11:20.0904778Z"
If Date.TryParseExact(dateString, "o", CultureInfo.InvariantCulture, _
DateTimeStyles.None, dateValue) Then
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End If
If Date.TryParseExact(dateString, "o", CultureInfo.InvariantCulture, _
DateTimeStyles.RoundtripKind, dateValue) Then
Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
dateValue.Kind)
Else
Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
End If
End Sub
End Module
' The example displays the following output:
' ' 5/01/2009 8:30 AM' is not in an acceptable format.
' Converted ' 5/01/2009 8:30 AM' to 5/1/2009 8:30:00 AM (Unspecified).
' Converted '5/01/2009 09:00' to 5/1/2009 9:00:00 AM (Unspecified).
' '5/01/2009 09:00' is not in an acceptable format.
' Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 11:30:42 AM (Local).
' Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 6:30:42 PM (Utc).
' Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 9:11:20 AM (Local).
' Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 4:11:20 PM (Utc).
注釈
メソッドは DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) 、日付の文字列形式を解析します。これは、 パラメーターで定義された format
形式である必要があります。 これは メソッドに DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) 似ていますが、変換が失敗した場合に TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) メソッドが例外をスローしない点が除きます。
パラメーターには s
、解析する日付と時刻が含まれており、 パラメーターで定義された format
形式である必要があります。 に日付、時刻、タイム ゾーンの要素が存在する場合は、 でs
format
指定された順序で表示する必要もあります。 time 要素のない日付を定義し、解析操作が成功した場合 format
、結果 DateTime の値の時刻は午前 0 時 (00:00:00) になります。 が date 要素を持たない時刻を定義し、解析操作が成功した場合format
、結果のDateTime値の既定の日付DateTime.Now.Date
は です。または、 フラグが含まれているDateTimeStyles.NoCurrentDateDefault場合styles
は のDateTime.MinValue.Date
日付になります。 パラメーターは style
、先頭、内側、または末尾の s
空白文字をパラメーターに含めることができるかどうかを決定します。
タイム ゾーン情報が含まれない場合s
、返されるDateTimeオブジェクトの プロパティは ですDateTimeKind.UnspecifiedKind。 この動作は、プロパティDateTimeKind.Localが の値KindをDateTimeStyles.AssumeLocal返す DateTime フラグを使用するか、 および DateTimeStyles.AdjustToUniversal フラグを使用DateTimeStyles.AssumeUniversalして変更できます。このフラグは、 プロパティが のDateTimeKind.Utc値KindをDateTime返します。 にタイム ゾーン情報が含まれている場合、時刻は必要に応じてローカル時刻に変換され Kind 、返される DateTime オブジェクトの プロパティは に DateTimeKind.Local設定されます。 この動作を変更するには、 フラグを DateTimeStyles.RoundtripKind 使用して協定世界時 (UTC) を現地時刻に変換せず、 プロパティを Kind に DateTimeKind.Utc設定します。
パラメーターには format
、パラメーターの予期される形式に対応するパターンが s
含まれています。 パラメーターの format
パターンは、 Custom Date and Time Format Strings テーブルの 1 つ以上のカスタム書式指定子、または標準 の日付と時刻 の書式指定文字列テーブルから定義済みのパターンを識別する 1 つの標準書式指定子で構成されます。
カスタム書式パターンで日付または時刻の区切り記号を使用しない場合は、 パラメーターのインバリアント カルチャ provider
と、各カスタム書式指定子の最も広い形式を使用します。 たとえば、パターンで時間を指定する場合は、狭い形式の "H" ではなく、より広い形式 "HH" を指定します。
注意
解析操作を s
成功させるために 1 つの形式に準拠することを要求するのではなく、 メソッドを呼び出して、複数の DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) 許可される形式を指定できます。 これにより、解析操作が成功する可能性が高くなります。
で使用されるs
特定の日付と時刻の記号と文字列 (特定の言語の曜日の名前など) は、 パラメーターによってprovider
定義されます。これは、 が標準書式指定子文字列である場合format
のs
正確な形式と同様です。 provider
パラメーターには、次のいずれかを指定できます。
CultureInfoを解釈
s
するために使用されるカルチャを表す オブジェクト。 プロパティDateTimeFormatによって返される オブジェクトはDateTimeFormatInfo、 でs
シンボルと書式を定義します。DateTimeFormatInfo日付と時刻のデータの形式を定義する オブジェクト。
メソッドがGetFormatオブジェクトまたはDateTimeFormatInfo書式設定情報を提供する CultureInfo オブジェクトを返すカスタムIFormatProvider実装。
が null
の場合provider
、現在のCultureInfoカルチャに対応する オブジェクトが使用されます。
パラメーターにはstyles
、 によってformat
定義されていない空白が で出現s
できるかどうかを決定し、解析操作のDateTimeStyles正確な動作を制御する列挙体の 1 つ以上のメンバーが含まれます。 次の表では、列挙体の各メンバーが DateTimeStyles メソッドの操作 TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) にどのように影響するかを示します。
DateTimeStyles メンバー | 説明 |
---|---|
AdjustToUniversal | s を解析し、必要に応じて UTC に変換します。 s にタイム ゾーン オフセットが含まれている場合、またはタイム ゾーン情報が含まれないが フラグがstyles 含まれているDateTimeStyles.AssumeLocal場合s 、メソッドは文字列を解析し、 を呼び出ToUniversalTimeして戻りDateTime値を UTC に変換し、 プロパティを Kind にDateTimeKind.Utc設定します。 が UTC を表していることを示す場合s 、またはタイム ゾーン情報が含まれていないがフラグがstyles 含まれているDateTimeStyles.AssumeUniversal場合s 、メソッドは文字列を解析し、返されたDateTime値に対してタイム ゾーン変換を実行せず、 プロパティを Kind にDateTimeKind.Utc設定します。 それ以外の場合は、フラグは無効です。 |
AllowInnerWhite | によって format 定義されていない空白を、個々の日付または時刻要素の間に表示できることを指定します。 |
AllowLeadingWhite | で format 定義されていない空白を の s 先頭に表示できることを指定します。 |
AllowTrailingWhite | で format 定義されていない空白を の s 末尾に表示できることを指定します。 |
AllowWhiteSpaces | s によってformat 定義されていない先頭、内側、末尾の空白を含む可能性があることを指定します。 |
AssumeLocal | タイム ゾーン情報がない場合 s は、ローカル時刻を表すと見なされることを指定します。 フラグがDateTimeStyles.AdjustToUniversal存在しない限り、Kind戻り値の プロパティは にDateTimeKind.Local設定されますDateTime。 |
AssumeUniversal | タイム ゾーン情報がない場合 s は、UTC を表すと見なされることを指定します。 フラグが DateTimeStyles.AdjustToUniversal 存在しない限り、 メソッドは返された DateTime 値を UTC から現地時刻に変換し、そのプロパティを Kind に DateTimeKind.Local設定します。 |
NoCurrentDateDefault | 日付情報のない時刻が含まれている場合 s 、戻り値の日付は に DateTime.MinValue.Date 設定されます。 |
None | パラメーターは s 既定値を使用して解析されます。 に存在する空白以外の format 空白は使用できません。 日付コンポーネントがない場合 s 、戻り値の日付は 1/1/0001 に設定されます DateTime 。 タイム ゾーン情報が含まれない場合s 、Kind返されるオブジェクトの プロパティは にDateTimeKind.Unspecified設定されますDateTime。 にタイム ゾーン情報が存在するs 場合、時刻はローカル時刻に変換され、Kind返されるオブジェクトの プロパティは にDateTimeKind.Local設定されますDateTime。 |
RoundtripKind | タイム ゾーン情報を含む文字列の場合、プロパティが に設定DateTimeKind.Localされた値KindへのDateTime変換を回避しようとします。 このフラグは、主に UTC 時刻からローカル時刻への変換を防ぎます。 |
注意 (呼び出し元)
.NET Framework 4 では、TryParseExact解析される文字列に時間コンポーネントと、一致していない AM/PM 指定子が含まれている場合、メソッドは を返false
します。 .NET Framework 3.5 以前のバージョンでは、AM/PM 指定子は無視されます。
こちらもご覧ください
適用対象
TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)
指定した書式の配列、カルチャ固有の書式情報、およびスタイルを使用して、指定した日付と時刻の文字列形式を等価の DateTime に変換します。 文字列形式の書式は、指定した書式の少なくとも 1 つと完全に一致する必要があります。 このメソッドは、変換に成功したかどうかを示す値を返します。
public:
static bool TryParseExact(System::String ^ s, cli::array <System::String ^> ^ formats, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParseExact (string s, string[] formats, IFormatProvider provider, System.Globalization.DateTimeStyles style, out DateTime result);
public static bool TryParseExact (string? s, string?[]? formats, IFormatProvider? provider, System.Globalization.DateTimeStyles style, out DateTime result);
static member TryParseExact : string * string[] * IFormatProvider * System.Globalization.DateTimeStyles * DateTime -> bool
Public Shared Function TryParseExact (s As String, formats As String(), provider As IFormatProvider, style As DateTimeStyles, ByRef result As DateTime) As Boolean
パラメーター
- s
- String
変換する日時を含む文字列。
- formats
- String[]
s
の許可された形式の配列。
- provider
- IFormatProvider
s
に関するカルチャ固有の書式情報を提供するオブジェクト。
- style
- DateTimeStyles
s
で使用可能な書式を示す、列挙値のビットごとの組み合わせ。 通常指定する値は、None です。
- result
- DateTime
このメソッドから制御が戻るときに、 に含まれる日付と時刻に相当する値が格納DateTimes
されます (変換が成功した場合は )。 変換に失敗した場合は DateTime.MinValue が格納されます。 s
または formats
が null
の場合、s
または formats
の要素が空の文字列の場合、あるいは、s
の書式が formats
に指定されたいずれの書式パターンとも一致しない場合、変換は失敗します。 このパラメーターは初期化せずに渡されます。
戻り値
s
パラメーターが正常に変換された場合は true
。それ以外の場合は false
。
例外
styles
は有効な DateTimeStyles 値ではありません。
または
styles
に DateTimeStyles 値の正しくない組み合わせが含まれています (たとえば、AssumeLocal と AssumeUniversal の両方などです)。
例
次の例では、 メソッドを DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) 使用して、使用可能な形式の文字列を正常に解析できるようにします。
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
string[] formats= {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt",
"MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss",
"M/d/yyyy hh:mm tt", "M/d/yyyy hh tt",
"M/d/yyyy h:mm", "M/d/yyyy h:mm",
"MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm"};
string[] dateStrings = {"5/1/2009 6:32 PM", "05/01/2009 6:32:05 PM",
"5/1/2009 6:32:00", "05/01/2009 06:32",
"05/01/2009 06:32:00 PM", "05/01/2009 06:32:00"};
DateTime dateValue;
foreach (string dateString in dateStrings)
{
if (DateTime.TryParseExact(dateString, formats,
new CultureInfo("en-US"),
DateTimeStyles.None,
out dateValue))
Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue);
else
Console.WriteLine("Unable to convert '{0}' to a date.", dateString);
}
}
}
// The example displays the following output:
// Converted '5/1/2009 6:32 PM' to 5/1/2009 6:32:00 PM.
// Converted '05/01/2009 6:32:05 PM' to 5/1/2009 6:32:05 PM.
// Converted '5/1/2009 6:32:00' to 5/1/2009 6:32:00 AM.
// Converted '05/01/2009 06:32' to 5/1/2009 6:32:00 AM.
// Converted '05/01/2009 06:32:00 PM' to 5/1/2009 6:32:00 PM.
// Converted '05/01/2009 06:32:00' to 5/1/2009 6:32:00 AM.
open System
open System.Globalization
let formats=
[| "M/d/yyyy h:mm:ss tt"; "M/d/yyyy h:mm tt"
"MM/dd/yyyy hh:mm:ss"; "M/d/yyyy h:mm:ss"
"M/d/yyyy hh:mm tt"; "M/d/yyyy hh tt"
"M/d/yyyy h:mm"; "M/d/yyyy h:mm"
"MM/dd/yyyy hh:mm"; "M/dd/yyyy hh:mm" |]
let dateStrings =
[ "5/1/2009 6:32 PM"; "05/01/2009 6:32:05 PM"
"5/1/2009 6:32:00"; "05/01/2009 06:32"
"05/01/2009 06:32:00 PM"; "05/01/2009 06:32:00" ]
for dateString in dateStrings do
match DateTime.TryParseExact(dateString, formats, CultureInfo "en-US", DateTimeStyles.None) with
| true, dateValue ->
printfn $"Converted '{dateString}' to {dateValue}."
| _ ->
printfn $"Unable to convert '{dateString}' to a date."
// The example displays the following output:
// Converted '5/1/2009 6:32 PM' to 5/1/2009 6:32:00 PM.
// Converted '05/01/2009 6:32:05 PM' to 5/1/2009 6:32:05 PM.
// Converted '5/1/2009 6:32:00' to 5/1/2009 6:32:00 AM.
// Converted '05/01/2009 06:32' to 5/1/2009 6:32:00 AM.
// Converted '05/01/2009 06:32:00 PM' to 5/1/2009 6:32:00 PM.
// Converted '05/01/2009 06:32:00' to 5/1/2009 6:32:00 AM.
Imports System.Globalization
Public Module Example
Public Sub Main()
Dim formats() As String = {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt", _
"MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss", _
"M/d/yyyy hh:mm tt", "M/d/yyyy hh tt", _
"M/d/yyyy h:mm", "M/d/yyyy h:mm", _
"MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm"}
Dim dateStrings() As String = {"5/1/2009 6:32 PM", "05/01/2009 6:32:05 PM", _
"5/1/2009 6:32:00", "05/01/2009 06:32", _
"05/01/2009 06:32:00 PM", "05/01/2009 06:32:00"}
Dim dateValue As DateTime
For Each dateString As String In dateStrings
If Date.TryParseExact(dateString, formats, _
New CultureInfo("en-US"), _
DateTimeStyles.None, _
dateValue) Then
Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue)
Else
Console.WriteLine("Unable to convert '{0}' to a date.", dateString)
End If
Next
End Sub
End Module
' The example displays the following output:
' Converted '5/1/2009 6:32 PM' to 5/1/2009 6:32:00 PM.
' Converted '05/01/2009 6:32:05 PM' to 5/1/2009 6:32:05 PM.
' Converted '5/1/2009 6:32:00' to 5/1/2009 6:32:00 AM.
' Converted '05/01/2009 06:32' to 5/1/2009 6:32:00 AM.
' Converted '05/01/2009 06:32:00 PM' to 5/1/2009 6:32:00 PM.
' Converted '05/01/2009 06:32:00' to 5/1/2009 6:32:00 AM.
注釈
メソッドは DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) 、 パラメーターに割り当てられているパターンのいずれかに一致する日付の文字列表現を formats
解析します。 これは メソッドに DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) 似ていますが、変換が失敗した場合に TryParseExact メソッドが例外をスローしない点が例外です。
パラメーターには s
、解析する日付と時刻が含まれます。 パラメーターにs
時刻のみが含まれており、日付が含まれていない場合、パラメーターに フラグが含まれていないDateTimeStyles.NoCurrentDateDefault限りstyle
、現在の日付が使用されます。この場合、既定の日付 (DateTime.Date.MinValue
) が使用されます。 パラメーターに s
日付のみが含まれており、時刻がない場合は、午前 0 時 (00:00:00) が使用されます。 パラメーターはstyle
、 の書式指定文字列の 1 つで許可される文字以外の先頭、内側、または末尾の空白文字をパラメーターにformats
含めることができるかどうかs
も決定します。
タイム ゾーン情報が含まれない場合s
、返されるDateTimeオブジェクトの プロパティは ですDateTimeKind.UnspecifiedKind。 この動作は、プロパティDateTimeKind.Localが の値KindをDateTimeStyles.AssumeLocal返す DateTime フラグを使用するか、 および DateTimeStyles.AdjustToUniversal フラグを使用DateTimeStyles.AssumeUniversalして変更できます。このフラグは、 プロパティが のDateTimeKind.Utc値KindをDateTime返します。 にタイム ゾーン情報が含まれている場合、時刻は必要に応じてローカル時刻に変換され Kind 、返される DateTime オブジェクトの プロパティは に DateTimeKind.Local設定されます。 この動作を変更するには、 フラグを DateTimeStyles.RoundtripKind 使用して協定世界時 (UTC) を現地時刻に変換せず、 プロパティを Kind に DateTimeKind.Utc設定します。
パラメーターには formats
パターンの配列が含まれています。そのうちの s
1 つは、解析操作が成功する場合に正確に一致する必要があります。 パラメーターの formats
パターンは、 カスタム日付と時刻書式指定文字列 テーブルの 1 つ以上のカスタム書式指定子、または標準 の日付と時刻 の書式指定文字列テーブルから定義済みのパターンを識別する 1 つの標準書式指定子で構成されます。
カスタム書式パターンで日付または時刻の区切り記号を使用しない場合は、 パラメーターのインバリアント カルチャ provider
と、各カスタム書式指定子の最も広い形式を使用します。 たとえば、パターンで時間を指定する場合は、狭い形式の "H" ではなく、より広い形式 "HH" を指定します。
で使用されるs
特定の日付と時刻の記号と文字列 (特定の言語の曜日の名前など) は、 パラメーターによってprovider
定義されます。これは、 が標準書式指定子文字列である場合format
のs
正確な形式と同様です。 provider
パラメーターには、次のいずれかを指定できます。
CultureInfoを解釈
s
するために使用されるカルチャを表す オブジェクト。 プロパティDateTimeFormatによって返される オブジェクトはDateTimeFormatInfo、 でs
シンボルと書式を定義します。DateTimeFormatInfo日付と時刻のデータの形式を定義する オブジェクト。
メソッドがGetFormatオブジェクトまたはDateTimeFormatInfo書式設定情報を提供する CultureInfo オブジェクトを返すカスタムIFormatProvider実装。
が null
の場合provider
、現在のCultureInfoカルチャに対応する オブジェクトが使用されます。
パラメーターにはstyles
、 によってformat
定義されていない空白が で出現s
できるかどうかを決定し、解析操作のDateTimeStyles正確な動作を制御する列挙体の 1 つ以上のメンバーが含まれます。 次の表では、列挙体の各メンバーが DateTimeStyles メソッドの操作 TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) にどのように影響するかを示します。
DateTimeStyles メンバー | 説明 |
---|---|
AdjustToUniversal | s を解析し、必要に応じて UTC に変換します。 s にタイム ゾーン オフセットが含まれている場合、またはタイム ゾーン情報が含まれないが フラグがstyles 含まれているDateTimeStyles.AssumeLocal場合s 、メソッドは文字列を解析し、 を呼び出ToUniversalTimeして戻りDateTime値を UTC に変換し、 プロパティを Kind にDateTimeKind.Utc設定します。 が UTC を表していることを示す場合s 、またはタイム ゾーン情報が含まれていないがフラグがstyles 含まれているDateTimeStyles.AssumeUniversal場合s 、メソッドは文字列を解析し、返されたDateTime値に対してタイム ゾーン変換を実行せず、 プロパティを Kind にDateTimeKind.Utc設定します。 それ以外の場合は、フラグは無効です。 |
AllowInnerWhite | によって format 定義されていない空白を、個々の日付または時刻要素の間に表示できることを指定します。 |
AllowLeadingWhite | で format 定義されていない空白を の s 先頭に表示できることを指定します。 |
AllowTrailingWhite | で format 定義されていない空白を の s 末尾に表示できることを指定します。 |
AllowWhiteSpaces | s によってformat 定義されていない先頭、内側、末尾の空白を含む可能性があることを指定します。 |
AssumeLocal | タイム ゾーン情報がない場合 s は、ローカル時刻を表すと見なされることを指定します。 フラグがDateTimeStyles.AdjustToUniversal存在しない限り、Kind戻り値の プロパティは にDateTimeKind.Local設定されますDateTime。 |
AssumeUniversal | タイム ゾーン情報がない場合 s は、UTC を表すと見なされることを指定します。 フラグが DateTimeStyles.AdjustToUniversal 存在しない限り、 メソッドは返された DateTime 値を UTC から現地時刻に変換し、そのプロパティを Kind に DateTimeKind.Local設定します。 |
NoCurrentDateDefault | 日付情報のない時刻が含まれている場合 s 、戻り値の日付は に DateTime.MinValue.Date 設定されます。 |
None | パラメーターは s 既定値を使用して解析されます。 に存在する空白以外の format 空白は使用できません。 日付コンポーネントがない場合 s 、戻り値の日付は 1/1/0001 に設定されます DateTime 。 タイム ゾーン情報が含まれない場合s 、Kind返されるオブジェクトの プロパティは にDateTimeKind.Unspecified設定されますDateTime。 にタイム ゾーン情報が存在するs 場合、時刻はローカル時刻に変換され、Kind返されるオブジェクトの プロパティは にDateTimeKind.Local設定されますDateTime。 |
RoundtripKind | タイム ゾーン情報を含む文字列の場合、プロパティが に設定DateTimeKind.Localされた値KindへのDateTime変換を回避しようとします。 このフラグは、主に UTC 時刻からローカル時刻への変換を防ぎます。 |
注意 (呼び出し元)
.NET Framework 4 では、TryParseExact解析される文字列に時間コンポーネントと、一致していない AM/PM 指定子が含まれている場合、メソッドは を返false
します。 .NET Framework 3.5 以前のバージョンでは、AM/PM 指定子は無視されます。