다음을 통해 공유


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 변환합니다. 문자열 표현의 형식은 지정된 형식 중 하나 이상과 정확히 일치해야 합니다. 이 메서드는 변환이 성공했는지 여부를 나타내는 값을 반환합니다.

설명

중요하다

일본 달력의 시대는 황제의 통치를 기반으로하므로 변경 될 것으로 예상된다. 예를 들어 2019년 5월 1일은 JapaneseCalendar 레이와 시대의 시작을 표시하고 JapaneseLunisolarCalendar. 이러한 시대의 변화는 이러한 달력을 사용하는 모든 애플리케이션에 영향을 줍니다. 자세한 내용과 애플리케이션이 영향을 받는지 여부를 확인하려면 .NET일본 달력에서 새 시대 처리를 참조하세요. Windows 시스템에서 애플리케이션을 테스트하여 시대 변화에 대한 준비 상태를 확인하는 방법에 대한 자세한 내용은 일본 시대 변경애플리케이션 준비를 참조하세요. 여러 연대가 있는 달력을 지원하는 .NET의 기능과 여러 연대를 지원하는 달력을 사용하는 경우 모범 사례는 사용하세요.

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

Source:
DateTime.cs
Source:
DateTime.cs
Source:
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형식을 나타내는 하나 이상의 열거형 값의 비트 조합입니다.

result
DateTime

이 메서드가 반환될 때 변환에 성공한 경우 포함된 날짜 및 시간에 해당하는 값을 포함하거나 변환에 실패한 경우 DateTime.MinValue . s 또는 format 매개 변수가 null, 빈 문자열이거나, format지정한 패턴에 해당하는 날짜 및 시간을 포함하지 않으면 변환이 실패합니다. 이 매개 변수는 초기화되지 않은 상태로 전달됩니다.

반환

s 성공적으로 변환되었는지 true. 그렇지 않으면 false.

적용 대상

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

Source:
DateTime.cs
Source:
DateTime.cs
Source:
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 매개 변수가 null, Empty또는 날짜 및 시간의 유효한 문자열 표현을 포함하지 않으면 변환이 실패합니다. 이 매개 변수는 초기화되지 않은 상태로 전달됩니다.

반환

s 매개 변수가 성공적으로 변환되었는지 true. 그렇지 않으면 false.

적용 대상

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

Source:
DateTime.cs
Source:
DateTime.cs
Source:
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형식을 나타내는 하나 이상의 열거형 값의 비트 조합입니다.

result
DateTime

이 메서드가 반환될 때 변환에 성공한 경우 포함된 날짜 및 시간에 해당하는 값을 포함하거나 변환에 실패한 경우 DateTime.MinValue . s 또는 format 매개 변수가 null, 빈 문자열이거나, format지정한 패턴에 해당하는 날짜 및 시간을 포함하지 않으면 변환이 실패합니다. 이 매개 변수는 초기화되지 않은 상태로 전달됩니다.

반환

s 성공적으로 변환되었는지 true. 그렇지 않으면 false.

예외

style 유효한 DateTimeStyles 값이 아닙니다.

-또는-

style 잘못된 DateTimeStyles 값 조합(예: AssumeLocalAssumeUniversal)을 포함합니다.

예제

다음 예제에서는 DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) 메서드를 보여 줍니다. 선행 공백은 format허용되지 않으므로 styles 매개 변수가 DateTimeStyles.None 경우 문자열 "5/01/2009 오전 8:30"을 성공적으로 구문 분석할 수 없습니다. 또한 "5/01/2009 09:00" 문자열은 "MM/dd/yyyyyhh: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 매개 변수로 정의된 형식이어야 합니다. 변환이 실패할 경우 TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) 메서드가 예외를 throw하지 않는다는 점을 제외하고 DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) 메서드와 비슷합니다.

s 매개 변수는 구문 분석할 날짜와 시간을 포함하며 format 매개 변수로 정의된 형식이어야 합니다. 날짜, 시간 및 표준 시간대 요소가 s있는 경우 format지정한 순서로 표시되어야 합니다. format 시간 요소가 없는 날짜를 정의하고 구문 분석 작업이 성공하면 결과 DateTime 값의 시간은 자정(00:00:00)입니다. format 날짜 요소가 없는 시간을 정의하고 구문 분석 작업이 성공하면 결과 DateTime 값에는 기본적으로 DateTime.Now.Date날짜가 있거나 stylesDateTimeStyles.NoCurrentDateDefault 플래그를 포함하는 경우 DateTime.MinValue.Date 날짜가 있습니다. style 매개 변수는 s 매개 변수에 선행, 내부 또는 후행 공백 문자를 포함할 수 있는지 여부를 결정합니다.

s 표준 시간대 정보가 없으면 반환된 DateTime 개체의 Kind 속성이 DateTimeKind.Unspecified. 이 동작은 Kind 속성이 DateTimeKind.LocalDateTime 값을 반환하는 DateTimeStyles.AssumeLocal 플래그를 사용하거나 Kind 속성이 DateTimeKind.UtcDateTime 값을 반환하는 DateTimeStyles.AssumeUniversalDateTimeStyles.AdjustToUniversal 플래그를 사용하여 변경할 수 있습니다. 표준 시간대 정보가 포함된 경우 시간이 현지 시간으로 변환되고 필요한 경우 반환된 DateTime 개체의 Kind 속성이 DateTimeKind.Local설정됩니다. 이 동작은 DateTimeStyles.RoundtripKind 플래그를 사용하여 UTC(협정 세계시)를 현지 시간으로 변환하지 않고 Kind 속성을 DateTimeKind.Utc설정하여 변경할 수 있습니다.

format 매개 변수에는 s 매개 변수의 예상 형식에 해당하는 패턴이 포함되어 있습니다. format 매개 변수의 패턴은 사용자 지정 날짜 및 시간 형식 문자열 테이블의 하나 이상의 사용자 지정 서식 지정자 또는 표준 날짜 및 시간 서식 문자열 테이블에서 미리 정의된 패턴을 식별하는 단일 표준 서식 지정자로 구성됩니다.

사용자 지정 서식 패턴에서 날짜 또는 시간 구분 기호를 사용하지 않는 경우 provider 매개 변수의 고정 문화권과 각 사용자 지정 형식 지정자의 가장 넓은 형식을 사용합니다. 예를 들어 패턴에서 시간을 지정하려면 더 좁은 형식인 "H" 대신 더 넓은 형식인 "HH"를 지정합니다.

메모

구문 분석 작업이 성공하기 위해 s 단일 형식을 준수하도록 요구하는 대신 DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) 메서드를 호출하고 허용되는 여러 형식을 지정할 수 있습니다. 이렇게 하면 구문 분석 작업이 성공할 가능성이 높아집니다.

s 사용되는 특정 날짜 및 시간 기호 및 문자열(예: 특정 언어의 요일 이름)은 format 표준 형식 지정자 문자열인 경우 s 정확한 형식과 마찬가지로 provider 매개 변수에 의해 정의됩니다. provider 매개 변수는 다음 중 어느 것일 수 있습니다.

provider null경우 현재 문화권에 해당하는 CultureInfo 개체가 사용됩니다.

styles 매개 변수에는 format 정의되지 않은 공백이 s 표시될 수 있는지 여부와 위치를 결정하고 구문 분석 작업의 정확한 동작을 제어하는 DateTimeStyles 열거형의 하나 이상의 멤버가 포함됩니다. 다음 표에서는 DateTimeStyles 열거형의 각 멤버가 TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) 메서드의 작업에 미치는 영향을 설명합니다.

DateTimeStyles 멤버 묘사
AdjustToUniversal s 구문 분석하고 필요한 경우 UTC로 변환합니다. s 표준 시간대 오프셋을 포함하거나 s 표준 시간대 정보를 포함하지 않지만 DateTimeStyles.AssumeLocal 플래그를 포함할 styles 경우 메서드는 문자열을 구문 분석하고 반환된 DateTime 값을 UTC로 변환하기 위해 ToUniversalTime 호출하고 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 값의 날짜는 0001년 1월 1일로 설정됩니다. s 표준 시간대 정보가 없으면 반환된 DateTime 개체의 Kind 속성이 DateTimeKind.Unspecified설정됩니다. 표준 시간대 정보가 s있는 경우 시간은 현지 시간으로 변환되고 반환된 DateTime 개체의 Kind 속성은 DateTimeKind.Local설정됩니다.
RoundtripKind 표준 시간대 정보를 포함하는 문자열의 경우 Kind 속성이 DateTimeKind.Local설정된 DateTime 값으로 변환하지 않도록 합니다. 이 플래그는 주로 UTC 시간을 현지 시간으로 변환하는 것을 방지합니다.

호출자 참고

.NET Framework 4에서 TryParseExact 메서드는 구문 분석할 문자열에 시간 구성 요소와 규약이 없는 AM/PM 지정자가 포함되어 있으면 false 반환합니다. .NET Framework 3.5 및 이전 버전에서는 AM/PM 지정자가 무시됩니다.

추가 정보

적용 대상

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

Source:
DateTime.cs
Source:
DateTime.cs
Source:
DateTime.cs

지정된 형식 배열, 문화권별 서식 정보 및 스타일을 사용하여 날짜 및 시간의 지정된 문자열 표현을 해당하는 DateTime 변환합니다. 문자열 표현의 형식은 지정된 형식 중 하나 이상과 정확히 일치해야 합니다. 이 메서드는 변환이 성공했는지 여부를 나타내는 값을 반환합니다.

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 또는 formatsnull, s 또는 formats 요소가 빈 문자열이거나, s 형식이 formats형식 패턴 중 하나 이상에서 지정한 것과 정확히 일치하지 않으면 변환이 실패합니다. 이 매개 변수는 초기화되지 않은 상태로 전달됩니다.

반환

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 매개 변수에 할당된 패턴 중 하나와 일치하는 날짜의 문자열 표현을 구문 분석합니다. 변환이 실패할 경우 TryParseExact 메서드가 예외를 throw하지 않는다는 점을 제외하면 DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) 메서드와 같습니다.

s 매개 변수에는 구문 분석할 날짜와 시간이 포함됩니다. s 매개 변수에 시간 및 날짜가 없는 경우 style 매개 변수에 DateTimeStyles.NoCurrentDateDefault 플래그가 포함되어 있지 않으면 현재 날짜가 사용됩니다. 이 경우 기본 날짜(DateTime.Date.MinValue)가 사용됩니다. s 매개 변수에 날짜만 있고 시간이 없는 경우 자정(00:00:00)이 사용됩니다. 또한 style 매개 변수는 s 매개 변수에 formats형식 문자열 중 하나에서 허용하는 공백 이외의 선행, 내부 또는 후행 공백 문자를 포함할 수 있는지 여부를 결정합니다.

s 표준 시간대 정보가 없으면 반환된 DateTime 개체의 Kind 속성이 DateTimeKind.Unspecified. 이 동작은 Kind 속성이 DateTimeKind.LocalDateTime 값을 반환하는 DateTimeStyles.AssumeLocal 플래그를 사용하거나 Kind 속성이 DateTimeKind.UtcDateTime 값을 반환하는 DateTimeStyles.AssumeUniversalDateTimeStyles.AdjustToUniversal 플래그를 사용하여 변경할 수 있습니다. 표준 시간대 정보가 포함된 경우 시간이 현지 시간으로 변환되고 필요한 경우 반환된 DateTime 개체의 Kind 속성이 DateTimeKind.Local설정됩니다. 이 동작은 DateTimeStyles.RoundtripKind 플래그를 사용하여 UTC(협정 세계시)를 현지 시간으로 변환하지 않고 Kind 속성을 DateTimeKind.Utc설정하여 변경할 수 있습니다.

formats 매개 변수에는 패턴 배열이 포함되어 있으며, 그 중 하나는 구문 분석 작업이 성공하는 경우 s 정확히 일치해야 합니다. formats 매개 변수의 패턴은 사용자 지정 날짜 및 시간 형식 문자열 테이블의 하나 이상의 사용자 지정 서식 지정자 또는 표준 날짜 및 시간 서식 문자열 테이블에서 미리 정의된 패턴을 식별하는 단일 표준 서식 지정자로 구성됩니다.

사용자 지정 서식 패턴에서 날짜 또는 시간 구분 기호를 사용하지 않는 경우 provider 매개 변수의 고정 문화권과 각 사용자 지정 형식 지정자의 가장 넓은 형식을 사용합니다. 예를 들어 패턴에서 시간을 지정하려면 더 좁은 형식인 "H" 대신 더 넓은 형식인 "HH"를 지정합니다.

s 사용되는 특정 날짜 및 시간 기호 및 문자열(예: 특정 언어의 요일 이름)은 format 표준 형식 지정자 문자열인 경우 s 정확한 형식과 마찬가지로 provider 매개 변수에 의해 정의됩니다. provider 매개 변수는 다음 중 어느 것일 수 있습니다.

provider null경우 현재 문화권에 해당하는 CultureInfo 개체가 사용됩니다.

styles 매개 변수에는 format 정의되지 않은 공백이 s 표시될 수 있는지 여부와 위치를 결정하고 구문 분석 작업의 정확한 동작을 제어하는 DateTimeStyles 열거형의 하나 이상의 멤버가 포함됩니다. 다음 표에서는 DateTimeStyles 열거형의 각 멤버가 TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) 메서드의 작업에 미치는 영향을 설명합니다.

DateTimeStyles 멤버 묘사
AdjustToUniversal s 구문 분석하고 필요한 경우 UTC로 변환합니다. s 표준 시간대 오프셋을 포함하거나 s 표준 시간대 정보를 포함하지 않지만 DateTimeStyles.AssumeLocal 플래그를 포함할 styles 경우 메서드는 문자열을 구문 분석하고 반환된 DateTime 값을 UTC로 변환하기 위해 ToUniversalTime 호출하고 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 값의 날짜는 0001년 1월 1일로 설정됩니다. s 표준 시간대 정보가 없으면 반환된 DateTime 개체의 Kind 속성이 DateTimeKind.Unspecified설정됩니다. 표준 시간대 정보가 s있는 경우 시간은 현지 시간으로 변환되고 반환된 DateTime 개체의 Kind 속성은 DateTimeKind.Local설정됩니다.
RoundtripKind 표준 시간대 정보를 포함하는 문자열의 경우 Kind 속성이 DateTimeKind.Local설정된 DateTime 값으로 변환하지 않도록 합니다. 이 플래그는 주로 UTC 시간을 현지 시간으로 변환하는 것을 방지합니다.

호출자 참고

.NET Framework 4에서 TryParseExact 메서드는 구문 분석할 문자열에 시간 구성 요소와 규약이 없는 AM/PM 지정자가 포함되어 있으면 false 반환합니다. .NET Framework 3.5 및 이전 버전에서는 AM/PM 지정자가 무시됩니다.

추가 정보

적용 대상