DateTime.TryParseExact メソッド

定義

指定した文字列形式の日付と時刻を等価の 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 つと完全に一致する必要があります。 このメソッドは、変換に成功したかどうかを示す値を返します。

注釈

重要

和暦の時代 (年号) は天皇の代に基づいているため、変更されることが予想されます。 たとえば、JapaneseCalendarJapaneseLunisolarCalendar において、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

変換に成功した場合は、このメソッドから戻る時点で、DateTime に格納された日時と等しい s 値が格納されます。変換に失敗した場合は MinValue が格納されます。 s パラメーターまたは format パラメーターが null の場合、空の文字列の場合、あるいは format に指定されたパターンに一致する日時が含まれていない場合、変換は失敗します。 このパラメーターは初期化せずに渡されます。

戻り値

Boolean

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

変換に成功した場合は、このメソッドから戻る時点で、DateTime に格納された日時と等しい s 値が格納されます。変換に失敗した場合は MinValue が格納されます。 s パラメーターが null か、Empty である場合、または日付と時刻を表す有効な文字列表現が含まれない場合、変換に失敗します。 このパラメーターは初期化せずに渡されます。

戻り値

Boolean

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

変換に成功した場合は、このメソッドから戻る時点で、DateTime に格納された日時と等しい s 値が格納されます。変換に失敗した場合は MinValue が格納されます。 s パラメーターまたは format パラメーターが null の場合、空の文字列の場合、あるいは format に指定されたパターンに一致する日時が含まれていない場合、変換は失敗します。 このパラメーターは初期化せずに渡されます。

戻り値

Boolean

s が正常に変換された場合は true。それ以外の場合は false

例外

styles は有効な DateTimeStyles 値ではありません。

または stylesDateTimeStyles 値の正しくない組み合わせが含まれています (たとえば、AssumeLocalAssumeUniversal の両方などです)。

DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)メソッドの例を次に示します。 styles DateTimeStyles.None によって先頭のスペースが許可されていないため、パラメーターがと等しい場合は、文字列 "5/01/2009 8:30 AM" を正常に解析できないことに注意して format ください。 さらに、"MM/dd/yyyyhh: mm" のを使用して文字列 "5/01/2009 09:00" を正常に解析することはできません。これは、では、 format 月の番号の前に、必要に応じて先行ゼロが表示されないため format です。

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).
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 要素を持たない日付を定義し、解析操作が成功した場合、結果の値の時刻は午前 0 時 format DateTime (00:00:00) になります。 が date 要素を持たない時刻を定義し、解析操作が成功した場合、結果の値は既定で の日付を持つか、 フラグが含まれる場合は の日付になります format DateTime DateTime.Now.Date DateTime.MinValue.Date styles DateTimeStyles.NoCurrentDateDefault 。 パラメーター style は、先頭、内部、または末尾の空白文字をパラメーター s に含めできるかどうかを決定します。

s タイム ゾーン情報が含まれている場合、返されるオブジェクト KindDateTime プロパティは です DateTimeKind.Unspecified 。 この動作は、 フラグを使用して変更できます。このフラグは、 プロパティが である値を返します。または、 フラグと フラグを使用して、プロパティが である値 DateTimeStyles.AssumeLocal DateTime Kind DateTimeKind.Local DateTimeStyles.AssumeUniversal DateTimeStyles.AdjustToUniversal DateTimeKind 返します DateTimeKind.Utc 。 にタイム ゾーン情報が含まれている場合、時刻は必要に応じて現地時刻に変換され、返されるオブジェクトの プロパティ Kind DateTime は に設定されます DateTimeKind.Local 。 この動作を変更するには、 フラグを使用して、時刻 (UTC) 協定世界時を現地時刻に変換し、プロパティを DateTimeStyles.RoundtripKind Kind に設定します DateTimeKind.Utc

パラメーター format には、 パラメーターの想定される形式に対応するパターンが含 s まれている。 パラメーターのパターンは、カスタム日時書式指定文字列テーブルの 1 つ以上のカスタム書式指定子、または標準の日時書式指定文字列テーブルから定義済みのパターンを識別する 1 つの標準書式指定子で構成されます。 format

カスタム書式パターンで日付または時刻の区切り記号を使用しない場合は、 パラメーターにインバリアント カルチャを使用し、各カスタム書式指定子の最も広い形式 provider を使用します。 たとえば、パターンで時間を指定する場合は、狭い形式の "H" ではなく、より広い形式の "HH" を指定します。

注意

解析操作を成功するために 1 つの形式に準拠する必要があるのではなく、 メソッドを呼び出し、複数の許可された形式 s DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) を指定できます。 これにより、解析操作が成功する可能性が高くなっています。

で使用される特定の日付と時刻のシンボルと文字列 (特定の言語の日付の名前など) は、 が標準書式指定子文字列である場合の正確な形式と同様に、 パラメーターによって s provider s format 定義されます。 providerパラメーターには、次のいずれかを指定できます。

providernull 場合、 CultureInfo 現在のカルチャに対応する オブジェクトが使用されます。

パラメーターには、 によって定義されていない空白を表示できるかどうかと、解析操作の正確な動作を制御する場所を決定する 列挙体の 1 つ以上のメンバー styles DateTimeStyles format s が含まれています。 次の表では、 列挙型の各メンバーが メソッドの操作 DateTimeStyles に与える影響について説明 TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) します。

DateTimeStyles メンバー 説明
AdjustToUniversal 解析し s 、必要に応じて UTC に変換します。 にタイム ゾーン オフセットが含まれている場合、または タイム ゾーン情報が含まれているのに フラグが含まれている場合、メソッドは文字列を解析し、返された値を UTC に変換するために を呼び出し、 プロパティを に s s styles DateTimeStyles.AssumeLocal ToUniversalTime DateTime Kind 設定します DateTimeKind.Utc 。 が s UTC を表すことを示している場合、またはにタイムゾーン情報が含まれておらず、フラグが含まれている場合 s styles DateTimeStyles.AssumeUniversal 、メソッドは文字列を解析し、返された値に対してタイムゾーン変換を実行せず DateTime に、プロパティをに設定し Kind DateTimeKind.Utc ます。 それ以外の場合、フラグは無効です。
AllowInnerWhite で定義されていない空白を format 、個別の日付または時刻要素の間に表示できることを指定します。
AllowLeadingWhite で定義されていない空白をの先頭に表示することを指定し format s ます。
AllowTrailingWhite で定義されていない空白が format の末尾に表示されることを指定し s ます。
AllowWhiteSpaces s よって定義されていない先頭、内部、および末尾の空白を含めることができることを指定し format ます。
AssumeLocal s タイムゾーン情報がない場合、現地時刻を表すと想定されることを指定します。 フラグが指定されていない限り DateTimeStyles.AdjustToUniversalKind 戻り DateTime 値のプロパティはに設定され DateTimeKind.Local ます。
AssumeUniversal s タイムゾーン情報を持たない場合、UTC を表すと想定されることを指定します。 DateTimeStyles.AdjustToUniversalフラグが存在しない場合、メソッドは、返された DateTime 値を UTC から現地時刻に変換し、その Kind プロパティをに設定し DateTimeKind.Local ます。
NoCurrentDateDefault sに日付情報のない時刻が含まれている場合、戻り値の日付はに設定され DateTime.MinValue.Date ます。
None sパラメーターは、既定値を使用して解析されます。 に存在しない空白は許可されません format 。 に s 日付要素がない場合、戻り値の日付 DateTime は1/1/0001 に設定されます。 sにタイムゾーン情報が含まれていない場合 Kind は、返されたオブジェクトのプロパティ DateTime がに設定され DateTimeKind.Unspecified ます。 タイムゾーン情報がに存在する場合、 s 時刻は現地時刻に変換され、 Kind 返された DateTime オブジェクトのプロパティはに設定され DateTimeKind.Local ます。
RoundtripKind タイムゾーン情報を含む文字列の場合、は、 DateTime プロパティがに設定された値への変換を防止しようとし Kind DateTimeKind.Local ます。 このフラグは、主に UTC 時刻からローカル時刻への変換を防止します。

注意 (呼び出し元)

.NET Framework 4 では、 TryParseExact メソッドはを返します false 。解析対象の文字列に1時間の部分と、アグリーメントに含まれていない AM/PM 指定子が含まれている場合です。 .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

変換に成功した場合は、このメソッドから戻る時点で、DateTime に格納された日時と等しい s 値が格納されます。変換に失敗した場合は MinValue が格納されます。 s または formatsnull の場合、s または formats の要素が空の文字列の場合、あるいは、s の書式が formats に指定されたいずれの書式パターンとも一致しない場合、変換は失敗します。 このパラメーターは初期化せずに渡されます。

戻り値

Boolean

s パラメーターが正常に変換された場合は true。それ以外の場合は false

例外

styles は有効な DateTimeStyles 値ではありません。

または stylesDateTimeStyles 値の正しくない組み合わせが含まれています (たとえば、AssumeLocalAssumeUniversal の両方などです)。

次の例では、メソッドを使用し 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.
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 時刻のみが含まれ、日付が含まれていない場合は、パラメーターにフラグが含まれていない限り、現在の日付が使用され style DateTimeStyles.NoCurrentDateDefault ます。この場合、既定の日付 ( DateTime.Date.MinValue ) が使用されます。 パラメーターに s 日付のみが含まれ、時刻が指定されていない場合は、深夜 (00:00:00) が使用されます。 また、パラメーターには、 style s のいずれかの書式指定文字列によって許可されていない空白文字を、パラメーターに含めることができるかどうかも決定され formats ます。

sにタイムゾーン情報が含まれていない場合、 Kind 返されるオブジェクトのプロパティ DateTime はに DateTimeKind.Unspecified なります。 この動作は、 DateTimeStyles.AssumeLocal プロパティがである値を返すフラグを使用する DateTime Kind か、 DateTimeKind.Local プロパティがである DateTimeStyles.AssumeUniversal 値を DateTimeStyles.AdjustToUniversal 返すフラグとフラグ DateTime Kind DateTimeKind.Utc を使用することによって変更できます。 にタイムゾーン情報が含まれている場合は、必要に応じて時刻が現地時刻に変換され、 Kind 返されたオブジェクトのプロパティ DateTime はに設定され DateTimeKind.Local ます。 この動作は、 DateTimeStyles.RoundtripKind 協定世界時 (UTC) を現地時刻に変換しないようにフラグを使用し、プロパティをに設定することによって変更でき Kind DateTimeKind.Utc ます。

パラメーターには formats パターンの配列が含まれており、そのいずれかが、 s 解析操作が成功する場合に正確に一致する必要があります。 パラメーターのパターンは、 formats カスタム日時書式指定文字列 の表にある1つ以上のカスタム書式指定子、または 標準の日時書式指定文字列 の表から定義済みのパターンを識別する単一の標準書式指定子で構成されます。

カスタム書式パターンで日付または時刻の区切り記号を使用しない場合は、パラメーターにインバリアントカルチャを使用し、 provider 各カスタム書式指定子の幅が最も広い形式を使用します。 たとえば、パターンに時間を指定する場合は、幅の狭い形式の "H" ではなく、広い形式の "HH" を指定します。

で使用される特定の日付と時刻の記号および文字列 (特定の言語での曜日の名前など) は、 s provider s format が標準書式指定子文字列であるかどうかの正確な形式として、パラメーターによって定義されます。 providerパラメーターには、次のいずれかを指定できます。

がの場合は provider nullCultureInfo 現在のカルチャに対応するオブジェクトが使用されます。

パラメーターには、で定義され styles DateTimeStyles ていない空白をで使用できるかどうかを決定する列挙体のメンバーが1つ以上含まれてい format s ます。これは、解析操作の正確な動作を制御します。 次の表では、列挙体の各メンバーが DateTimeStyles メソッドの操作に与える影響について説明し TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) ます。

DateTimeStyles メンバー 説明
AdjustToUniversal を解析し、必要に応じ s て UTC に変換します。 にタイムゾーンオフセットが含まれている s 場合、または s にタイムゾーン情報が含まれておらず、フラグが含まれている場合 styles DateTimeStyles.AssumeLocal 、メソッドは文字列を解析し、を呼び出して、 ToUniversalTime 返された DateTime 値を UTC に変換し、 Kind プロパティをに設定し DateTimeKind.Utc ます。 が s UTC を表すことを示している場合、またはにタイムゾーン情報が含まれておらず、フラグが含まれている場合 s styles DateTimeStyles.AssumeUniversal 、メソッドは文字列を解析し、返された値に対してタイムゾーン変換を実行せず DateTime に、プロパティをに設定し Kind DateTimeKind.Utc ます。 それ以外の場合、フラグは無効です。
AllowInnerWhite で定義されていない空白を format 、個別の日付または時刻要素の間に表示できることを指定します。
AllowLeadingWhite で定義されていない空白をの先頭に表示することを指定し format s ます。
AllowTrailingWhite で定義されていない空白が format の末尾に表示されることを指定し s ます。
AllowWhiteSpaces s よって定義されていない先頭、内部、および末尾の空白を含めることができることを指定し format ます。
AssumeLocal s タイムゾーン情報がない場合、現地時刻を表すと想定されることを指定します。 フラグが指定されていない限り DateTimeStyles.AdjustToUniversalKind 戻り DateTime 値のプロパティはに設定され DateTimeKind.Local ます。
AssumeUniversal s タイムゾーン情報を持たない場合、UTC を表すと想定されることを指定します。 DateTimeStyles.AdjustToUniversalフラグが存在しない場合、メソッドは、返された DateTime 値を UTC から現地時刻に変換し、その Kind プロパティをに設定し DateTimeKind.Local ます。
NoCurrentDateDefault sに日付情報のない時刻が含まれている場合、戻り値の日付はに設定され DateTime.MinValue.Date ます。
None sパラメーターは、既定値を使用して解析されます。 に存在しない空白は許可されません format 。 に s 日付要素がない場合、戻り値の日付 DateTime は1/1/0001 に設定されます。 sにタイムゾーン情報が含まれていない場合 Kind は、返されたオブジェクトのプロパティ DateTime がに設定され DateTimeKind.Unspecified ます。 タイムゾーン情報がに存在する場合、 s 時刻は現地時刻に変換され、 Kind 返された DateTime オブジェクトのプロパティはに設定され DateTimeKind.Local ます。
RoundtripKind タイムゾーン情報を含む文字列の場合、は、 DateTime プロパティがに設定された値への変換を防止しようとし Kind DateTimeKind.Local ます。 このフラグは、主に UTC 時刻からローカル時刻への変換を防止します。

注意 (呼び出し元)

.NET Framework 4 では、 TryParseExact メソッドはを返します false 。解析対象の文字列に1時間の部分と、アグリーメントに含まれていない AM/PM 指定子が含まれている場合です。 .NET Framework 3.5 以前のバージョンでは、AM/PM 指定子は無視されます。

こちらもご覧ください

適用対象