次の方法で共有


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 つと完全に一致する必要があります。 このメソッドは、変換が成功したかどうかを示す値を返します。

注釈

大事な

日本暦の年号は天皇の治世に基づいているため、変化することが期待されます。 たとえば、2019 年 5 月 1 日は、JapaneseCalendarJapaneseLunisolarCalendarで令和元年の始まりを示しました。 このような時代の変化は、これらのカレンダーを使用するすべてのアプリケーションに影響します。 詳細およびアプリケーションが影響を受けるかどうかを確認するには、「.NETの日本語カレンダーで新しい時代 (年号) を処理する を参照してください。 Windows システム上でアプリケーションをテストして時代 (年号) の変更に対する準備を確認する方法については、「日本の時代 (年号) の変更に対応するためのアプリケーションの準備」を参照してください。 複数の時代 (年号) を含むカレンダーをサポートする .NET の機能と、複数の時代 (年号) をサポートするカレンダーを使用する場合のベスト プラクティスについては、「年号の使用」を参照してください。

TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime)

ソース:
DateTime.cs
ソース:
DateTime.cs
ソース:
DateTime.cs

指定した形式、カルチャ固有の書式情報、およびスタイルを使用して、日付と時刻の指定したスパン表現を同等の 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.MinValue を します。 s パラメーターまたは format パラメーターが null、空の文字列、または formatで指定されたパターンに対応する日付と時刻が含まれていない場合、変換は失敗します。 このパラメーターは初期化されていない状態で渡されます。

戻り値

s が正常に変換されたかどうかを true します。それ以外の場合は、falseします。

適用対象

TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTime)

ソース:
DateTime.cs
ソース:
DateTime.cs
ソース:
DateTime.cs

日付と時刻の指定した文字範囲を等価の 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.MinValue を します。 s パラメーターが nullEmpty、または日付と時刻の有効な文字列表現が含まれていない場合、変換は失敗します。 このパラメーターは初期化されていない状態で渡されます。

戻り値

s パラメーターが正常に変換されたかどうかを true します。それ以外の場合は、falseします。

適用対象

TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)

ソース:
DateTime.cs
ソース:
DateTime.cs
ソース:
DateTime.cs

指定した形式、カルチャ固有の書式情報、およびスタイルを使用して、日付と時刻の指定した文字列形式を等価の 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.MinValue を します。 s パラメーターまたは format パラメーターが null、空の文字列、または formatで指定されたパターンに対応する日付と時刻が含まれていない場合、変換は失敗します。 このパラメーターは初期化されていない状態で渡されます。

戻り値

s が正常に変換されたかどうかを true します。それ以外の場合は、falseします。

例外

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

-又は-

style には、DateTimeStyles 値の無効な組み合わせ (たとえば、AssumeLocalAssumeUniversalの両方) が含まれています。

次の例では、DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) メソッドを示します。 styles パラメーターが DateTimeStyles.None と等しい場合、先頭のスペースは formatで許可されないため、文字列 "5/01/2009 8:30 AM" は正常に解析できないことに注意してください。 さらに、文字列 "5/01/2009 09:00" は、"MM/dd/yyyyhh:mm" の format で正常に解析できません。これは、日付文字列が先頭に 0 を付けた月番号の前に存在しないため 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).
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で指定された順序で表示する必要もあります。 format が time 要素のない日付を定義し、解析操作が成功した場合、結果の DateTime 値の時刻は午前 0 時 (00:00:00) になります。 format が date 要素を持たない時刻を定義し、解析操作が成功した場合、結果の DateTime の値は既定で DateTime.Now.Dateの日付になります。または、DateTimeStyles.NoCurrentDateDefault フラグが含まれている場合は DateTime.MinValue.Date の日付 stylesstyle パラメーターは、s パラメーターに先頭、内側、または末尾の空白文字を含めることができるかどうかを決定します。

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

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

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

手記

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

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

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

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

DateTimeStyles メンバー 形容
AdjustToUniversal s を解析し、必要に応じて UTC に変換します。 s にタイム ゾーン オフセットが含まれている場合、または s にタイム ゾーン情報が含まれているが、stylesDateTimeStyles.AssumeLocal フラグが含まれている場合、メソッドは文字列を解析し、ToUniversalTime を呼び出して返された DateTime 値を UTC に変換し、Kind プロパティを DateTimeKind.Utcに設定します。 s が UTC を表していることを示す場合、または s にタイム ゾーン情報が含まれていないが、DateTimeStyles.AssumeUniversal フラグが含まれている styles 場合、メソッドは文字列を解析し、返された DateTime 値に対してタイム ゾーン変換を実行せず、Kind プロパティを DateTimeKind.Utcに設定します。 それ以外の場合は、フラグは無効です。
AllowInnerWhite format で定義されていない空白を個々の日付または時刻要素の間に表示できることを指定します。
AllowLeadingWhite format で定義されていない空白を sの先頭に表示できることを指定します。
AllowTrailingWhite format で定義されていない空白を sの末尾に表示できることを指定します。
AllowWhiteSpaces s に、formatで定義されていない先頭、内側、および末尾の空白を含めることができます。
AssumeLocal s にタイム ゾーン情報がない場合は、現地時刻を表すと見なされることを指定します。 DateTimeStyles.AdjustToUniversal フラグが存在しない限り、返される DateTime 値の Kind プロパティは 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 含まない場合、返される DateTime オブジェクトの Kind プロパティは DateTimeKind.Unspecifiedに設定されます。 タイム ゾーン情報が sに存在する場合、時刻は現地時刻に変換され、返された DateTime オブジェクトの Kind プロパティは DateTimeKind.Localに設定されます。
RoundtripKind タイム ゾーン情報を含む文字列の場合は、Kind プロパティが DateTimeKind.Localに設定された DateTime 値への変換を回避します。 このフラグは、主に UTC 時刻から現地時刻への変換を禁止します。

注意 (呼び出し元)

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

こちらもご覧ください

  • ParseExact
  • CultureInfo
  • DateTimeFormatInfo
  • .NET Framework での日付と時刻の文字列の解析の
  • 標準の日時書式指定文字列 を する
  • カスタム日時書式指定文字列 を する

適用対象

TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)

ソース:
DateTime.cs
ソース:
DateTime.cs
ソース:
DateTime.cs

指定した形式の配列、カルチャ固有の書式情報、およびスタイルを使用して、日付と時刻の指定した文字列形式を等価の 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.MinValue を します。 s または formatsnulls、または formats の要素が空の文字列であるか、s の形式が formatsの形式パターンの少なくとも 1 つで指定されているとおりでない場合、変換は失敗します。 このパラメーターは初期化されていない状態で渡されます。

戻り値

s パラメーターが正常に変換されたかどうかを true します。それ以外の場合は、falseします。

例外

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

-又は-

style には、DateTimeStyles 値の無効な組み合わせ (たとえば、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.
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 パラメーターに時刻のみが含まれ、日付がない場合は、style パラメーターに DateTimeStyles.NoCurrentDateDefault フラグが含まれている場合を除き、現在の日付が使用されます。この場合、既定の日付 (DateTime.Date.MinValue) が使用されます。 s パラメーターに日付のみが含まれており、時刻がない場合は、午前 0 時 (00:00:00) が使用されます。 style パラメーターは、s パラメーターに、formatsのいずれかの書式指定文字列で許可されている空白文字以外の先頭、内側、または末尾の空白文字を含めることができるかどうかを決定します。

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

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

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

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

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

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

DateTimeStyles メンバー 形容
AdjustToUniversal s を解析し、必要に応じて UTC に変換します。 s にタイム ゾーン オフセットが含まれている場合、または s にタイム ゾーン情報が含まれているが、stylesDateTimeStyles.AssumeLocal フラグが含まれている場合、メソッドは文字列を解析し、ToUniversalTime を呼び出して返された DateTime 値を UTC に変換し、Kind プロパティを DateTimeKind.Utcに設定します。 s が UTC を表していることを示す場合、または s にタイム ゾーン情報が含まれていないが、DateTimeStyles.AssumeUniversal フラグが含まれている styles 場合、メソッドは文字列を解析し、返された DateTime 値に対してタイム ゾーン変換を実行せず、Kind プロパティを DateTimeKind.Utcに設定します。 それ以外の場合は、フラグは無効です。
AllowInnerWhite format で定義されていない空白を個々の日付または時刻要素の間に表示できることを指定します。
AllowLeadingWhite format で定義されていない空白を sの先頭に表示できることを指定します。
AllowTrailingWhite format で定義されていない空白を sの末尾に表示できることを指定します。
AllowWhiteSpaces s に、formatで定義されていない先頭、内側、および末尾の空白を含めることができます。
AssumeLocal s にタイム ゾーン情報がない場合は、現地時刻を表すと見なされることを指定します。 DateTimeStyles.AdjustToUniversal フラグが存在しない限り、返される DateTime 値の Kind プロパティは 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 含まない場合、返される DateTime オブジェクトの Kind プロパティは DateTimeKind.Unspecifiedに設定されます。 タイム ゾーン情報が sに存在する場合、時刻は現地時刻に変換され、返された DateTime オブジェクトの Kind プロパティは DateTimeKind.Localに設定されます。
RoundtripKind タイム ゾーン情報を含む文字列の場合は、Kind プロパティが DateTimeKind.Localに設定された DateTime 値への変換を回避します。 このフラグは、主に UTC 時刻から現地時刻への変換を禁止します。

注意 (呼び出し元)

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

こちらもご覧ください

  • ParseExact
  • CultureInfo
  • DateTimeFormatInfo
  • .NET Framework での日付と時刻の文字列の解析の
  • 標準の日時書式指定文字列 を する
  • カスタム日時書式指定文字列 を する

適用対象