DateTime.ParseExact DateTime.ParseExact DateTime.ParseExact DateTime.ParseExact Method

정의

날짜 및 시간에 대한 지정된 문자열 표현을 해당 DateTime으로 변환합니다.Converts the specified string representation of a date and time to its DateTime equivalent. 문자열 표현의 형식은 지정된 형식과 정확하게 일치해야 합니다. 그렇지 않으면 예외가 throw됩니다.The format of the string representation must match a specified format exactly or an exception is thrown.

오버로드

ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider)

지정된 형식 및 문화권별 형식 정보를 사용하여 날짜 및 시간의 지정된 문자열 표현을 해당 DateTime으로 변환합니다.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format and culture-specific format information. 문자열 표현의 형식이 지정된 형식과 정확하게 일치해야 합니다.The format of the string representation must match the specified format exactly.

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

지정된 형식, 문화권별 형식 정보 및 스타일을 사용하여 날짜 및 시간의 지정된 문자열 표현을 해당 DateTime으로 변환합니다.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. 문자열 표현의 서식은 지정된 서식과 정확하게 일치해야 합니다. 그렇지 않으면 예외가 throw됩니다.The format of the string representation must match the specified format exactly or an exception is thrown.

ParseExact(String, String[], IFormatProvider, DateTimeStyles) ParseExact(String, String[], IFormatProvider, DateTimeStyles) ParseExact(String, String[], IFormatProvider, DateTimeStyles) ParseExact(String, String[], IFormatProvider, DateTimeStyles)

지정된 형식 배열, 문화권별 형식 정보 및 스타일을 사용하여 지정된 날짜와 시간의 문자열 표현을 해당 DateTime 표현으로 변환합니다.Converts the specified string representation of a date and time to its DateTime equivalent using the specified array of formats, culture-specific format information, and style. 문자열 표현의 서식은 지정된 형식 중 최소한 하나와 정확하게 일치해야 합니다. 그렇지 않으면 예외가 throw됩니다.The format of the string representation must match at least one of the specified formats exactly or an exception is thrown.

설명

중요

일본어 달력의 시대는 천황 통치 기간을 기준으로 하므로 변경되어야 합니다.Eras in the Japanese calendars are based on the emperor's reign and are therefore expected to change. 예를 들어 2019년 5월 1일은 JapaneseCalendarJapaneseLunisolarCalendar에서 레이와 시대의 시작을 나타냅니다.For example, May 1, 2019 marked the beginning of the Reiwa era in the JapaneseCalendar and JapaneseLunisolarCalendar. 이러한 시대 변경 내용은 해당 달력을 사용하는 모든 애플리케이션에 영향을 줍니다.Such a change of era affects all applications that use these calendars. 자세한 내용 및 현재 애플리케이션이 영향을 받는지 확인하는 방법은 .NET에서 일본식 달력의 새로운 세대 처리를 참조하세요.See Handling a new era in the Japanese calendar in .NET for more information and to determine whether your applications are affected. Windows 시스템에서 애플리케이션을 테스트하여 세대 변화에 대한 준비 상태를 확인하는 방법은 일본어 세대 변경을 위한 애플리케이션 준비를 참조하세요.See Prepare your application for the Japanese era change for information on testing your applications on Windows systems to ensure their readiness for the era change. 여러 시대가 포함된 달력을 지원하는 .NET의 기능과 여러 시대를 지원하는 달력을 사용할 때 모범 사례에 대해서는 시대 작업을 참조하세요.See Working with eras for features in .NET that support calendars with multiple eras and for best practices when working with calendars that support multiple eras.

ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider) ParseExact(String, String, IFormatProvider)

지정된 형식 및 문화권별 형식 정보를 사용하여 날짜 및 시간의 지정된 문자열 표현을 해당 DateTime으로 변환합니다.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format and culture-specific format information. 문자열 표현의 형식이 지정된 형식과 정확하게 일치해야 합니다.The format of the string representation must match the specified format exactly.

public:
 static DateTime ParseExact(System::String ^ s, System::String ^ format, IFormatProvider ^ provider);
public static DateTime ParseExact (string s, string format, IFormatProvider provider);
static member ParseExact : string * string * IFormatProvider -> DateTime
Public Shared Function ParseExact (s As String, format As String, provider As IFormatProvider) As DateTime

매개 변수

s
String String String String

변환할 날짜 및 시간이 포함된 문자열입니다.A string that contains a date and time to convert.

format
String String String String

s의 필수 형식을 정의하는 서식 지정자입니다.A format specifier that defines the required format of s. 자세한 내용은 설명 섹션을 참조하세요.For more information, see the Remarks section.

provider
IFormatProvider IFormatProvider IFormatProvider IFormatProvider

s에 대한 문화권별 서식 지정 정보를 제공하는 개체입니다.An object that supplies culture-specific format information about s.

반환

sformat에 지정된 내용에 따라 provider에 포함된 날짜 및 시간에 해당하는 개체입니다.An object that is equivalent to the date and time contained in s, as specified by format and provider.

예외

s 또는 formatnull인 경우s or format is null.

s 또는 format가 빈 문자열입니다.s or format is an empty string.

또는-or- sformat에 지정된 패턴과 일치하는 날짜 및 시간이 포함되어 있지 않습니다.s does not contain a date and time that corresponds to the pattern specified in format.

또는-or- s의 시간 구성 요소와 AM/PM 지정자가 일치하지 않습니다.The hour component and the AM/PM designator in s do not agree.

예제

다음 예제는 ParseExact 메서드.The following example demonstrates the ParseExact method.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string dateString, format;  
      DateTime result;
      CultureInfo provider = CultureInfo.InvariantCulture;

      // Parse date-only value with invariant culture.
      dateString = "06/15/2008";
      format = "d";
      try {
         result = DateTime.ParseExact(dateString, format, provider);
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
      }
      catch (FormatException) {
         Console.WriteLine("{0} is not in the correct format.", dateString);
      } 

      // Parse date-only value without leading zero in month using "d" format.
      // Should throw a FormatException because standard short date pattern of 
      // invariant culture requires two-digit month.
      dateString = "6/15/2008";
      try {
         result = DateTime.ParseExact(dateString, format, provider);
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
      }
      catch (FormatException) {
         Console.WriteLine("{0} is not in the correct format.", dateString);
      }
      
      // Parse date and time with custom specifier.
      dateString = "Sun 15 Jun 2008 8:30 AM -06:00";
      format = "ddd dd MMM yyyy h:mm tt zzz";
      try {
         result = DateTime.ParseExact(dateString, format, provider);
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
      }
      catch (FormatException) {
         Console.WriteLine("{0} is not in the correct format.", dateString);
      }
      
      // Parse date and time with offset but without offset's minutes.
      // Should throw a FormatException because "zzz" specifier requires leading  
      // zero in hours.
      dateString = "Sun 15 Jun 2008 8:30 AM -06";
      try {
         result = DateTime.ParseExact(dateString, format, provider);
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
      }   
      catch (FormatException) {
         Console.WriteLine("{0} is not in the correct format.", dateString);
      } 
      
      dateString = "15/06/2008 08:30";
      format = "g";
      provider = new CultureInfo("fr-FR");
      try {
         result = DateTime.ParseExact(dateString, format, provider);
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
      }   
      catch (FormatException) {
         Console.WriteLine("{0} is not in the correct format.", dateString);
      } 

      // Parse a date that includes seconds and milliseconds
      // by using the French (France) and invariant cultures.
      dateString = "18/08/2015 06:30:15.006542";
      format = "dd/MM/yyyy HH:mm:ss.ffffff";
      try {
         result = DateTime.ParseExact(dateString, format, provider);
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString());
      }
      catch (FormatException) {
         Console.WriteLine("{0} is not in the correct format.", dateString);
      }
   }
}
// The example displays the following output:
//       06/15/2008 converts to 6/15/2008 12:00:00 AM.
//       6/15/2008 is not in the correct format.
//       Sun 15 Jun 2008 8:30 AM -06:00 converts to 6/15/2008 7:30:00 AM.
//       Sun 15 Jun 2008 8:30 AM -06 is not in the correct format.
//       15/06/2008 08:30 converts to 6/15/2008 8:30:00 AM.
//       18/08/2015 06:30:15.006542 converts to 8/18/2015 6:30:15 AM.
Imports System.Globalization

Module Example
   Public Sub Main()
      Dim dateString, format As String  
      Dim result As Date
      Dim provider As CultureInfo = CultureInfo.InvariantCulture

      ' Parse date-only value with invariant culture.
      dateString = "06/15/2008"
      format = "d"
      Try
         result = Date.ParseExact(dateString, format, provider)
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
      Catch e As FormatException
         Console.WriteLine("{0} is not in the correct format.", dateString)
      End Try 

      ' Parse date-only value without leading zero in month using "d" format.
      ' Should throw a FormatException because standard short date pattern of 
      ' invariant culture requires two-digit month.
      dateString = "6/15/2008"
      Try
         result = Date.ParseExact(dateString, format, provider)
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
      Catch e As FormatException
         Console.WriteLine("{0} is not in the correct format.", dateString)
      End Try 
      
      ' Parse date and time with custom specifier.
      dateString = "Sun 15 Jun 2008 8:30 AM -06:00"
      format = "ddd dd MMM yyyy h:mm tt zzz"        
      Try
         result = Date.ParseExact(dateString, format, provider)
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
      Catch e As FormatException
         Console.WriteLine("{0} is not in the correct format.", dateString)
      End Try 
      
      ' Parse date and time with offset but without offset's minutes.
      ' Should throw a FormatException because "zzz" specifier requires leading  
      ' zero in hours.
      dateString = "Sun 15 Jun 2008 8:30 AM -06"
      Try
         result = Date.ParseExact(dateString, format, provider)
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
      Catch e As FormatException
         Console.WriteLine("{0} is not in the correct format.", dateString)
      End Try 
      
      ' Parse a date string using the French (France) culture.
      dateString = "15/06/2008 08:30"
      format = "g"
      provider = New CultureInfo("fr-FR")
      Try
         result = Date.ParseExact(dateString, format, provider)
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
      Catch e As FormatException
         Console.WriteLine("{0} is not in the correct format.", dateString)
      End Try

      ' Parse a date that includes seconds and milliseconds
      ' by using the French (France) and invariant cultures.
      dateString = "18/08/2015 06:30:15.006542"
      format = "dd/MM/yyyy HH:mm:ss.ffffff"
      Try
         result = Date.ParseExact(dateString, format, provider)
         Console.WriteLine("{0} converts to {1}.", dateString, result.ToString())
      Catch e As FormatException
         Console.WriteLine("{0} is not in the correct format.", dateString)
      End Try
   End Sub
End Module
' The example displays the following output:
'       06/15/2008 converts to 6/15/2008 12:00:00 AM.
'       6/15/2008 is not in the correct format.
'       Sun 15 Jun 2008 8:30 AM -06:00 converts to 6/15/2008 7:30:00 AM.
'       Sun 15 Jun 2008 8:30 AM -06 is not in the correct format.
'       15/06/2008 08:30 converts to 6/15/2008 8:30:00 AM.
'       18/08/2015 06:30:15.006542 converts to 8/18/2015 6:30:15 AM.

설명

DateTime.ParseExact(String, String, IFormatProvider) 하 여 정의 된 형식에서 이어야 하는 날짜의 문자열 표현을 구문 분석 하는 메서드는 format 매개 변수입니다.The DateTime.ParseExact(String, String, IFormatProvider) method parses the string representation of a date, which must be in the format defined by the format parameter. 또한 해야 하는 합니다 <날짜 > 및 <시간 > 날짜 및 시간의 문자열 표현의 요소에 지정 된 순서에 표시 format, 및 s 에서허용되지않는흰색공간이없습니다format.It also requires that the <Date> and <Time> elements of the string representation of a date and time appear in the order specified by format, and that s have no white space other than that permitted by format. 하는 경우 format 날짜 정의 없습니다 시간 요소와 구문 분석 작업이 성공 하면 결과 DateTime 값에는 시간을 자정 (00: 00:00).If format defines a date with no time element and the parse operation succeeds, the resulting DateTime value has a time of midnight (00:00:00). 하는 경우 format 한 번 정의 요소가 없는 날짜와 구문 분석 작업이 성공 하면 결과 DateTime 값의 날짜에 DateTime.Now.Date입니다.If format defines a time with no date element and the parse operation succeeds, the resulting DateTime value has a date of DateTime.Now.Date.

하는 경우 s 는 시간을 특정 표준 시간대 및 구문 분석 작업이 성공 하면 나타내지 않습니다. 합니다 Kind 반환 된 속성 DateTime 값은 DateTimeKind.Unspecified합니다.If s does not represent a time in a particular time zone and the parse operation succeeds, the Kind property of the returned DateTime value is DateTimeKind.Unspecified. 하는 경우 s 특정 표준 시간대의 시간을 나타내지 않습니다 하 고 format 시간대 정보가 있을 수 있습니다 (경우에 예를 들어 format 가 "o", "r" 또는 "u" 표준 서식 지정자는 "z", "zz" 또는 "zzz"이 포함 된 경우 또는 사용자 지정 형식 지정자)를 Kind 반환 된 속성 DateTime 값은 DateTimeKind.Local합니다.If s does represent the time in a particular time zone and format allows time zone information to be present (for example, if format is equal to the "o", "r", or "u" standard format specifiers, or if it contains the "z", "zz", or "zzz" custom format specifiers), the Kind property of the returned DateTime value is DateTimeKind.Local.

합니다 format 매개 변수는 단일 표준 형식 지정자, 또는의 필수 형식을 정의 하는 하나 이상의 사용자 지정 형식 지정자를 포함 하는 문자열로 s합니다.The format parameter is a string that contains either a single standard format specifier, or one or more custom format specifiers that define the required format of s. 유효한 서식 코드에 대 한 자세한 내용은 참조 하세요 표준 날짜 및 시간 서식 문자열 하거나 사용자 지정 날짜 및 시간 형식 문자열합니다.For details about valid formatting codes, see Standard Date and Time Format Strings or Custom Date and Time Format Strings.

참고

하는 경우 format 는 하지 않는 날짜 또는 시간 구분 기호 (예: "yyyyMMddHHmm")를 포함할에 대 한 고정 문화권을 사용 하 여 사용자 지정 형식 패턴의 provider 매개 변수와 가장 넓은 형식으로 각 사용자 지정 형식 지정자입니다.If format is a custom format pattern that does not include date or time separators (such as "yyyyMMddHHmm"), use the invariant culture for the provider parameter and the widest form of each custom format specifier. 예를 들어 형식 패턴에 시간을 지정 하려는 경우 "H" 형식 대신 더 광범위 한 형식, "HH"를 지정 합니다.For example, if you want to specify hours in the format pattern, specify the wider form, "HH", instead of the narrower form, "H".

특정 날짜 및 시간 기호 및 문자열 (예: 특정 언어로 요일 이름)에 사용 되는 s 가 정의한 합니다 provider 매개 변수를 그대로의 정확한 형식을 s 경우 format 표준 형식입니다 지정자 문자열입니다.The particular date and time symbols and strings (such as names of the days of the week in a particular language) used in s are defined by the provider parameter, as is the precise format of s if format is a standard format specifier string. provider 매개 변수는 다음 중 하나일 수 있습니다.The provider parameter can be any of the following:

하는 경우 provider 됩니다 null, CultureInfo 현재 문화권에 해당 하는 개체를 사용 합니다.If provider is null, the CultureInfo object that corresponds to the current culture is used.

호출자 참고

.NET Framework 4.NET Framework 4, ParseExact 메서드가 throw를 FormatException 구문 분석 될 문자열 경우 시간 구성 요소 및 계약에 없는 AM/PM 지정자를 포함 합니다.In the .NET Framework 4.NET Framework 4, the ParseExact method throws a FormatException if the string to be parsed contains an hour component and an AM/PM designator that are not in agreement. .NET Framework 3.5.NET Framework 3.5 이전 버전에서는 AM/PM 지정자는 무시 됩니다.In the .NET Framework 3.5.NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.

추가 정보

ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles) ParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles)

public static DateTime ParseExact (ReadOnlySpan<char> s, ReadOnlySpan<char> format, IFormatProvider provider, System.Globalization.DateTimeStyles style = System.Globalization.DateTimeStyles.None);
static member ParseExact : ReadOnlySpan<char> * ReadOnlySpan<char> * IFormatProvider * System.Globalization.DateTimeStyles -> DateTime
Public Shared Function ParseExact (s As ReadOnlySpan(Of Char), format As ReadOnlySpan(Of Char), provider As IFormatProvider, Optional style As DateTimeStyles = System.Globalization.DateTimeStyles.None) As DateTime

매개 변수

format
ReadOnlySpan<Char>

반환

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

public static DateTime ParseExact (ReadOnlySpan<char> s, string[] formats, IFormatProvider provider, System.Globalization.DateTimeStyles style = System.Globalization.DateTimeStyles.None);
static member ParseExact : ReadOnlySpan<char> * string[] * IFormatProvider * System.Globalization.DateTimeStyles -> DateTime
Public Shared Function ParseExact (s As ReadOnlySpan(Of Char), formats As String(), provider As IFormatProvider, Optional style As DateTimeStyles = System.Globalization.DateTimeStyles.None) As DateTime

매개 변수

formats
String[]

반환

ParseExact(String, String, IFormatProvider, DateTimeStyles) ParseExact(String, String, IFormatProvider, DateTimeStyles) ParseExact(String, String, IFormatProvider, DateTimeStyles) ParseExact(String, String, IFormatProvider, DateTimeStyles)

지정된 형식, 문화권별 형식 정보 및 스타일을 사용하여 날짜 및 시간의 지정된 문자열 표현을 해당 DateTime으로 변환합니다.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. 문자열 표현의 서식은 지정된 서식과 정확하게 일치해야 합니다. 그렇지 않으면 예외가 throw됩니다.The format of the string representation must match the specified format exactly or an exception is thrown.

public:
 static DateTime ParseExact(System::String ^ s, System::String ^ format, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style);
public static DateTime ParseExact (string s, string format, IFormatProvider provider, System.Globalization.DateTimeStyles style);
static member ParseExact : string * string * IFormatProvider * System.Globalization.DateTimeStyles -> DateTime
Public Shared Function ParseExact (s As String, format As String, provider As IFormatProvider, style As DateTimeStyles) As DateTime

매개 변수

s
String String String String

날짜와 시간이 포함된 변환할 문자열입니다.A string containing a date and time to convert.

format
String String String String

s의 필수 형식을 정의하는 서식 지정자입니다.A format specifier that defines the required format of s. 자세한 내용은 설명 섹션을 참조하세요.For more information, see the Remarks section.

provider
IFormatProvider IFormatProvider IFormatProvider IFormatProvider

s에 대한 문화권별 형식 지정 정보를 제공하는 개체입니다.An object that supplies culture-specific formatting information about s.

style
DateTimeStyles DateTimeStyles DateTimeStyles DateTimeStyles

s, s에 나타날 수 있는 스타일 요소 또는 s에서 DateTime 값으로 변환하는 방법에 대한 추가 정보를 제공하는 열거형 값의 비트 조합입니다.A bitwise combination of the enumeration values that provides additional information about s, about style elements that may be present in s, or about the conversion from s to a DateTime value. 지정할 일반적인 값은 None입니다.A typical value to specify is None.

반환

s, formatprovider에 지정된 내용에 따라 style에 포함된 날짜 및 시간에 해당하는 개체입니다.An object that is equivalent to the date and time contained in s, as specified by format, provider, and style.

예외

s 또는 formatnull인 경우s or format is null.

s 또는 format가 빈 문자열입니다.s or format is an empty string.

또는-or- sformat에 지정된 패턴과 일치하는 날짜 및 시간이 포함되어 있지 않습니다.s does not contain a date and time that corresponds to the pattern specified in format.

또는-or- s의 시간 구성 요소와 AM/PM 지정자가 일치하지 않습니다.The hour component and the AM/PM designator in s do not agree.

styleDateTimeStyles 값의 잘못된 조합이 포함되어 있습니다.style contains an invalid combination of DateTimeStyles values. 예를 들어 AssumeLocalAssumeUniversal이 포함되어 있습니다.For example, both AssumeLocal and AssumeUniversal.

예제

다음 예제는 ParseExact(String, String, IFormatProvider) 메서드.The following example demonstrates the ParseExact(String, String, IFormatProvider) method. 문자열 "2009 년 5 월 01 8:30 AM" 분석할 수 없습니다 경우 합니다 styles 매개 변수가 같으면 DateTimeStyles.None 선행 공백을 허용 하지 않는 있으므로 format합니다.Note that the string " 5/01/2009 8:30 AM" cannot be parsed successfully when the styles parameter equals DateTimeStyles.None because leading spaces are not allowed by format. 또한 문자열 "2009 년 5 월 01 09시"으로 분석할 수 없습니다는 format 의 "MM/dd/yyyyhh:mm" 날짜 문자열으로 앞에 0 사용 하 여 월 수를 붙이지 않습니다 때문에 format 필요 합니다.Additionally, the string "5/01/2009 09:00" cannot be parsed successfully with a format of "MM/dd/yyyyhh:mm" because the date string does not precede the month number with a leading zero, as format requires.

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";
      try {
         dateValue = DateTime.ParseExact(dateString, "g", enUS, DateTimeStyles.None);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, 
                           dateValue.Kind);
      }                           
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }
      // Allow a leading space in the date string.
      try {
         dateValue = DateTime.ParseExact(dateString, "g", enUS, DateTimeStyles.AllowLeadingWhite);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, 
                           dateValue.Kind);
      }                           
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }
      
      // Use custom formats with M and MM.
      dateString = "5/01/2009 09:00";
      try {
         dateValue = DateTime.ParseExact(dateString, "M/dd/yyyy hh:mm", enUS, DateTimeStyles.None);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, 
                           dateValue.Kind);
      }                           
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }
      // Allow a leading space in the date string.
      try {
         dateValue = DateTime.ParseExact(dateString, "MM/dd/yyyy hh:mm", enUS, DateTimeStyles.None);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, 
                           dateValue.Kind);
      }                           
      catch (FormatException) {
         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"; 
      try {
         dateValue = DateTime.ParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, DateTimeStyles.None);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, 
                           dateValue.Kind);
      }                           
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }
      // Allow a leading space in the date string.
      try {
         dateValue = DateTime.ParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, 
                                     DateTimeStyles.AdjustToUniversal);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, 
                           dateValue.Kind);
      }                           
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }
           
      // Parse a string representing UTC.
      dateString = "2008-06-11T16:11:20.0904778Z";
      try {
         dateValue = DateTime.ParseExact(dateString, "o", CultureInfo.InvariantCulture, 
                                     DateTimeStyles.None);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, 
                           dateValue.Kind);
      }                           
      catch (FormatException) {
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
      }
      try {
         dateValue = DateTime.ParseExact(dateString, "o", CultureInfo.InvariantCulture, 
                                     DateTimeStyles.RoundtripKind);
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, 
                           dateValue.Kind);
      }                           
      catch (FormatException) {
         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

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"
      Try
         dateValue = Date.ParseExact(dateString, "g", enUS, DateTimeStyles.None)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
      ' Allow a leading space in the date string.
      Try
         dateValue = Date.ParseExact(dateString, "g", enUS, DateTimeStyles.AllowLeadingWhite)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
      
      ' Use custom formats with M and MM.
      dateString = "5/01/2009 09:00"
      Try
         dateValue = Date.ParseExact(dateString, "M/dd/yyyy hh:mm", enUS, DateTimeStyles.None)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
      ' Allow a leading space in the date string.
      Try
         dateValue = Date.ParseExact(dateString, "MM/dd/yyyy hh:mm", enUS, DateTimeStyles.None)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try

      ' Parse a string with time zone information.
      dateString = "05/01/2009 01:30:42 PM -05:00" 
      Try
         dateValue = Date.ParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, DateTimeStyles.None)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
      ' Allow a leading space in the date string.
      Try
         dateValue = Date.ParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, _
                                     DateTimeStyles.AdjustToUniversal)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
           
      ' Parse a string representing UTC.
      dateString = "2008-06-11T16:11:20.0904778Z"
      Try
         dateValue = Date.ParseExact(dateString, "o", CultureInfo.InvariantCulture, _
                                     DateTimeStyles.None)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
      Try
         dateValue = Date.ParseExact(dateString, "o", CultureInfo.InvariantCulture, _
                                     DateTimeStyles.RoundtripKind)
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Catch e As FormatException
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End Try
   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.ParseExact(String, String, IFormatProvider, DateTimeStyles) 하 여 정의 된 형식에서 이어야 하는 날짜의 문자열 표현을 구문 분석 하는 메서드는 format 매개 변수입니다.The DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) method parses the string representation of a date, which must be in a format defined by the format parameter. 또한 해야 하는 날짜 및 시간 요소 s 하 여 지정 된 순서로 표시 format합니다.It also requires that the date and time elements in s appear in the order specified by format. 경우 s 의 패턴과 일치 하지 않는 합니다 format 매개 변수를 정의한 변화를 style 매개 변수는 메서드가 throw를 FormatException.If s does not match the pattern of the format parameter, with any variations defined by the style parameter, the method throws a FormatException. 반면에 DateTime.Parse(String, IFormatProvider, DateTimeStyles) 메서드 형식 공급자가 인식 하는 형식 중 하나는 날짜의 문자열 표현을 구문 분석 DateTimeFormatInfo 개체입니다.In contrast, the DateTime.Parse(String, IFormatProvider, DateTimeStyles) method parses the string representation of a date in any one of the formats recognized by the format provider's DateTimeFormatInfo object. 합니다 DateTime.Parse(String, IFormatProvider, DateTimeStyles) 메서드는 또한의 날짜 및 시간 요소를 사용 하면 s 순서에 관계 없이 표시 합니다.The DateTime.Parse(String, IFormatProvider, DateTimeStyles) method also allows the date and time elements in s to appear in any order.

경우는 s 매개 변수 시간만 있고 날짜가 하지 않으면 현재 날짜가 사용 됩니다는 style 매개 변수를 포함 합니다 DateTimeStyles.NoCurrentDateDefault 기본 날짜는 경우에 플래그 (DateTime.Date.MinValue) 사용 됩니다.If the s parameter contains only a time and no date, the current date is used unless the style parameter includes the DateTimeStyles.NoCurrentDateDefault flag, in which case the default date (DateTime.Date.MinValue) is used. 경우는 s 매개 변수에 포함만 날짜 및 시간, 자정 (00: 00:00) 사용 됩니다.If the s parameter contains only a date and no time, midnight (00:00:00) is used. 합니다 style 매개 변수를 결정 하는지 여부를 s 매개 변수 앞, 내부 또는 후행 공백 문자를 포함할 수 있습니다.The style parameter also determines whether the s parameter can contain leading, inner, or trailing white space characters.

하는 경우 s 없는 표준 시간대 정보를 포함 합니다 Kind 반환 된 속성 DateTime 개체가 DateTimeKind.Unspecified합니다.If s contains no time zone information, the Kind property of the returned DateTime object is DateTimeKind.Unspecified. 사용 하 여이 동작을 변경할 수 있습니다 합니다 DateTimeStyles.AssumeLocal 플래그를 반환 하는 DateTimeKind 속성이 DateTimeKind.Local, 또는 사용 하 여를 DateTimeStyles.AssumeUniversalDateTimeStyles.AdjustToUniversal 플래그를 반환 하는 DateTimeKind 속성은 DateTimeKind.Utc합니다.This behavior can be changed by using the DateTimeStyles.AssumeLocal flag, which returns a DateTime value whose Kind property is DateTimeKind.Local, or by using the DateTimeStyles.AssumeUniversal and DateTimeStyles.AdjustToUniversal flags, which returns a DateTime value whose Kind property is DateTimeKind.Utc. 하는 경우 s 표준 시간대 정보를 포함 필요에 따라 시간이 현지 시간으로 변환 됩니다 및 Kind 반환 된 속성 DateTime 개체를로 DateTimeKind.Local합니다.If s contains time zone information, the time is converted to local time, if necessary, and the Kind property of the returned DateTime object is set to DateTimeKind.Local. 사용 하 여이 동작을 변경할 수 있습니다 합니다 DateTimeStyles.RoundtripKind 현지 시간을 변환할 utc (협정 세계시)를 설정 하는 플래그를 Kind 속성을 DateTimeKind.Utc입니다.This behavior can be changed by using the DateTimeStyles.RoundtripKind flag to not convert Coordinated Universal Time (UTC) to a local time and to set the Kind property to DateTimeKind.Utc.

합니다 format 의 필요한 패턴을 정의 하는 매개 변수는 s 매개 변수입니다.The format parameter defines the required pattern of the s parameter. 하나 이상의 사용자 지정 형식 지정자를 구성할 수 있습니다 합니다 사용자 지정 날짜 및 시간 서식 문자열 테이블 또는에서 미리 정의 된 패턴을 식별 하는 단일 표준 형식 지정자는 표준 날짜 및 시간 형식 문자열 테이블입니다.It can consist of either one or more custom format specifiers from the Custom Date and Time Format Strings table, or a single standard format specifier, which identifies a predefined pattern, from the Standard Date and Time Format Strings table.

사용자 지정 형식 패턴에 날짜 또는 시간 구분 기호를 사용 하지 않는 경우에 대 한 고정 문화권을 사용 합니다 provider 매개 변수와 가장 넓은 형식으로 각 사용자 지정 형식 지정자입니다.If you do not use date or time separators in a custom format pattern, use the invariant culture for the provider parameter and the widest form of each custom format specifier. 예를 들어 패턴에 시간을 지정 하려는 경우 "H" 형식 대신 더 광범위 한 형식, "HH"를 지정 합니다.For example, if you want to specify hours in the pattern, specify the wider form, "HH", instead of the narrower form, "H".

참고

요구 하는 대신 s 구문 분석 작업이 성공 하기 위해 단일 형식을 준수, 호출할 수 있습니다는 DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) 메서드 여러 허용 된 형식을 지정 합니다.Rather than requiring that s conform to a single format for the parse operation to succeed, you can call the DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) method and specify multiple permitted formats. 이렇게 하면 구문 분석 작업이 성공 가능성이 있습니다.This makes the parse operation more likely to succeed.

합니다 styles 하나 이상의 멤버를 포함 하는 매개 변수를 DateTimeStyles 공백에 정의 되지 않은 여부와 위치를 결정 하는 열거형 format 에 나타날 수 있습니다 s 구문 분석 작업의 정확한 동작을 제어 하 합니다.The styles parameter includes one or more members of the DateTimeStyles enumeration that determine whether and where white space not defined by format can appear in s and that control the precise behavior of the parse operation. 다음 표에서 각 방법의 멤버를 DateTimeStyles 열거형의 작업에 영향을 줍니다는 ParseExact(String, String, IFormatProvider, DateTimeStyles) 메서드.The following table describes how each member of the DateTimeStyles enumeration affects the operation of the ParseExact(String, String, IFormatProvider, DateTimeStyles) method.

DateTimeStyles 멤버DateTimeStyles member 설명Description
AdjustToUniversal 구문 분석 s 필요한 UTC로 변환 하는 경우.Parses s and, if necessary, converts it to UTC. 경우 s 표준 시간대 오프셋을 포함 이거나 s 시간대 정보가 없습니다 있지만 styles 포함 합니다 DateTimeStyles.AssumeLocal 플래그를 메서드 호출 문자열 구문 분석 ToUniversalTime 반환 된 변환할 DateTime 값을 UTC 를 가져오거나 설정 합니다 Kind 속성을 DateTimeKind.Utc입니다.If s includes a time zone offset, or if s contains no time zone information but styles includes the DateTimeStyles.AssumeLocal flag, the method parses the string, calls ToUniversalTime to convert the returned DateTime value to UTC, and sets the Kind property to DateTimeKind.Utc. 경우 s UTC를 나타냅니다 이거나 s 표준 시간대 정보를 포함 하지 있지만 styles 포함 합니다 DateTimeStyles.AssumeUniversal 플래그를 메서드 문자열을 구문 분석, 반환 된 표준 시간대 변환 작업 없이 수행 DateTime 값 집합과 합니다 Kind 속성을 DateTimeKind.Utc입니다.If s indicates that it represents UTC, or if s does not contain time zone information but styles includes the DateTimeStyles.AssumeUniversal flag, the method parses the string, performs no time zone conversion on the returned DateTime value, and sets the Kind property to DateTimeKind.Utc. 다른 모든 경우 플래그에는 영향을 주지 않습니다.In all other cases, the flag has no effect.
AllowInnerWhite 에 정의 되지 않은 공백이 지정 format 모든 개별 날짜 또는 시간 요소 사이 나타날 수 있습니다.Specifies that white space not defined by format can appear between any individual date or time element.
AllowLeadingWhite 지정 하 여 정의 되지 않은 공백이 format 부분에 나타날 수 있습니다 s합니다.Specifies that white space not defined by format can appear at the beginning of s.
AllowTrailingWhite 지정 하 여 정의 되지 않은 공백이 format 끝에 표시 될 수 있습니다 s합니다.Specifies that white space not defined by format can appear at the end of s.
AllowWhiteSpaces 형식임 s 선행, 내부 및 후행에 정의 되지 않은 공백을 포함할 수 있습니다 format합니다.Specifies that s may contain leading, inner, and trailing white spaces not defined by format.
AssumeLocal 지정 합니다 s 표준 시간대 정보가 없으면 로컬 시간을 나타내는 것으로 가정 합니다.Specifies that if s lacks any time zone information, it is assumed to represent a local time. 경우가 아니면 합니다 DateTimeStyles.AdjustToUniversal 플래그가 없으면 합니다 Kind 반환 된 속성 DateTime 값으로 설정 됩니다 DateTimeKind.Local.Unless the DateTimeStyles.AdjustToUniversal flag is present, the Kind property of the returned DateTime value is set to DateTimeKind.Local.
AssumeUniversal 지정 합니다 s 표준 시간대 정보가 없으면 UTC를 나타내는 것으로 가정 합니다.Specifies that if s lacks any time zone information, it is assumed to represent UTC. 경우가 아니면 합니다 DateTimeStyles.AdjustToUniversal 플래그가, 메서드가 반환 된 변환 하는 DateTime 값을 UTC에서 현지 시간 및 집합 해당 Kind 속성을 DateTimeKind.Local입니다.Unless the DateTimeStyles.AdjustToUniversal flag is present, the method converts the returned DateTime value from UTC to local time and sets its Kind property to DateTimeKind.Local.
NoCurrentDateDefault 하는 경우 s 시간 포함 날짜 정보 없이 반환 값의 날짜 설정 됩니다 DateTime.MinValue.Date합니다.If s contains time without date information, the date of the return value is set to DateTime.MinValue.Date.
None s 매개 변수는 기본값을 사용 하 여 구문 분석 됩니다.The s parameter is parsed using default values. 에 있는 이외의 공백이 없습니다 format 허용 됩니다.No white space other than that present in format is allowed. 하는 경우 s 날짜 구성 요소를 반환 된 날짜에 DateTime 값 1/1/0001로 설정 됩니다.If s lacks a date component, the date of the returned DateTime value is set to 1/1/0001. 경우 s 표준 시간대 정보가 없습니다 합니다 Kind 반환 된 속성 DateTime 개체를로 DateTimeKind.Unspecified합니다.If s contains no time zone information, the Kind property of the returned DateTime object is set to DateTimeKind.Unspecified. 표준 시간대 정보에 있는 경우 s, 시간이 현지 시간으로 변환 됩니다 및 Kind 반환 된 속성 DateTime 개체를로 DateTimeKind.Local합니다.If time zone information is present in s, the time is converted to local time and the Kind property of the returned DateTime object is set to DateTimeKind.Local.
RoundtripKind 표준 시간대 정보가 포함 된 문자열에 대 한 방지 하려고로 변환을 DateTime 사용 하 여 시간 및 날짜 값 해당 Kind 속성으로 설정 DateTimeKind.Local합니다.For strings that contain time zone information, tries to prevent the conversion to a DateTime value date and time with its Kind property set to DateTimeKind.Local. 이 플래그는 주로 현지 시간을 UTC 시간으로 변환을 방지합니다.This flag primarily prevents the conversion of UTC times to local times.

특정 날짜 및 시간 기호 및 문자열 (예: 특정 언어로 요일 이름)에 사용 되는 s 가 정의한 합니다 provider 매개 변수를 그대로의 정확한 형식을 s 경우 format 표준 형식입니다 지정자 문자열입니다.The particular date and time symbols and strings (such as the names of the days of the week in a particular language) used in s are defined by the provider parameter, as is the precise format of s if format is a standard format specifier string. provider 매개 변수는 다음 중 하나일 수 있습니다.The provider parameter can be any of the following:

하는 경우 provider 됩니다 null, CultureInfo 현재 문화권에 해당 하는 개체를 사용 합니다.If provider is null, the CultureInfo object that corresponds to the current culture is used.

호출자 참고

.NET Framework 4.NET Framework 4, ParseExact 메서드가 throw를 FormatException 구문 분석 될 문자열 경우 시간 구성 요소 및 계약에 없는 AM/PM 지정자를 포함 합니다.In the .NET Framework 4.NET Framework 4, the ParseExact method throws a FormatException if the string to be parsed contains an hour component and an AM/PM designator that are not in agreement. .NET Framework 3.5.NET Framework 3.5 이전 버전에서는 AM/PM 지정자는 무시 됩니다.In the .NET Framework 3.5.NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.

추가 정보

ParseExact(String, String[], IFormatProvider, DateTimeStyles) ParseExact(String, String[], IFormatProvider, DateTimeStyles) ParseExact(String, String[], IFormatProvider, DateTimeStyles) ParseExact(String, String[], IFormatProvider, DateTimeStyles)

지정된 형식 배열, 문화권별 형식 정보 및 스타일을 사용하여 지정된 날짜와 시간의 문자열 표현을 해당 DateTime 표현으로 변환합니다.Converts the specified string representation of a date and time to its DateTime equivalent using the specified array of formats, culture-specific format information, and style. 문자열 표현의 서식은 지정된 형식 중 최소한 하나와 정확하게 일치해야 합니다. 그렇지 않으면 예외가 throw됩니다.The format of the string representation must match at least one of the specified formats exactly or an exception is thrown.

public:
 static DateTime ParseExact(System::String ^ s, cli::array <System::String ^> ^ formats, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style);
public static DateTime ParseExact (string s, string[] formats, IFormatProvider provider, System.Globalization.DateTimeStyles style);
static member ParseExact : string * string[] * IFormatProvider * System.Globalization.DateTimeStyles -> DateTime
Public Shared Function ParseExact (s As String, formats As String(), provider As IFormatProvider, style As DateTimeStyles) As DateTime

매개 변수

s
String String String String

변환할 날짜 및 시간이 포함된 문자열입니다.A string that contains a date and time to convert.

formats
String[]

s에 허용되는 형식의 배열입니다.An array of allowable formats of s. 자세한 내용은 설명 섹션을 참조하세요.For more information, see the Remarks section.

provider
IFormatProvider IFormatProvider IFormatProvider IFormatProvider

s에 대한 문화권별 서식 지정 정보를 제공하는 개체입니다.An object that supplies culture-specific format information about s.

style
DateTimeStyles DateTimeStyles DateTimeStyles DateTimeStyles

s에 사용할 수 있는 형식을 나타내는 열거형 값의 비트 조합입니다.A bitwise combination of enumeration values that indicates the permitted format of s. 지정할 일반적인 값은 None입니다.A typical value to specify is None.

반환

s, formatsprovider에 지정된 내용에 따라 style에 포함된 날짜 및 시간에 해당하는 개체입니다.An object that is equivalent to the date and time contained in s, as specified by formats, provider, and style.

예외

s 또는 formatsnull인 경우s or formats is null.

s이 빈 문자열인 경우s is an empty string.

또는-or- formats의 요소가 빈 문자열입니다.an element of formats is an empty string.

또는-or- sformats 요소에 해당하는 날짜 및 시간이 포함되어 있지 않습니다.s does not contain a date and time that corresponds to any element of formats.

또는-or- s의 시간 구성 요소와 AM/PM 지정자가 일치하지 않습니다.The hour component and the AM/PM designator in s do not agree.

styleDateTimeStyles 값의 잘못된 조합이 포함되어 있습니다.style contains an invalid combination of DateTimeStyles values. 예를 들어 AssumeLocalAssumeUniversal이 포함되어 있습니다.For example, both AssumeLocal and AssumeUniversal.

예제

다음 예제에서는 DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) 메서드는 여러 가지 가능한 형식에서에서 문자열로 구문 분석할 수 있도록 합니다.The following example uses the DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) method to ensure that a string in a number of possible formats can be successfully parsed .

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",
                         "MM/d/yyyy HH:mm:ss.ffffff" };
      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",
                              "08/28/2015 16:17:39.125", "08/28/2015 16:17:39.125000" };
      DateTime dateValue;
      
      foreach (string dateString in dateStrings)
      {
         try {
            dateValue = DateTime.ParseExact(dateString, formats, 
                                            new CultureInfo("en-US"), 
                                            DateTimeStyles.None);
            Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue);
         }
         catch (FormatException) {
            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.
//       Unable to convert '08/28/2015 16:17:39.125' to a date.
//       Converted '08/28/2015 16:17:39.125000' to 8/28/2015 4:17:39 PM.
Imports System.Globalization

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",
                                 "MM/d/yyyy HH:mm:ss.ffffff" }
      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",
                                     "08/28/2015 16:17:39.125", "08/28/2015 16:17:39.125000" }

      Dim dateValue As DateTime
      
      For Each dateString As String In dateStrings
         Try
            dateValue = DateTime.ParseExact(dateString, formats, _
                                            New CultureInfo("en-US"), _
                                            DateTimeStyles.None)
            Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue)
         Catch e As FormatException
            Console.WriteLine("Unable to convert '{0}' to a date.", dateString)
         End Try                                               
      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.
'       Unable to convert '08/28/2015 16:17:39.125' to a date.
'       Converted '08/28/2015 16:17:39.125000' to 8/28/2015 4:17:39 PM.

설명

합니다 DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) 에 할당 된 패턴 중 하 나와 일치 하는 날짜의 문자열 표현을 구문 분석 하는 메서드는 formats 매개 변수입니다.The DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) method parses the string representation of a date that matches any one of the patterns assigned to the formats parameter. 경우 문자열 s 정의한 변형 중 하나를 사용 하 여 이러한 패턴 중 하 나와 일치 하지 않습니다 합니다 styles 매개 변수는 메서드가 throw를 FormatException입니다.If the string s does not match any one of these patterns with any of the variations defined by the styles parameter, the method throws a FormatException. 비교 하는 것 외 s 여러 서식 지정 패턴을 대신 단일 서식 패턴을이 오버 로드 동일 하 게 동작 합니다 DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) 메서드.Aside from comparing s to multiple formatting patterns, rather than to a single formatting pattern, this overload behaves identically to the DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) method.

s 매개 변수는 날짜 및 시간 구문 분석을 포함 합니다.The s parameter contains the date and time to parse. 경우는 s 매개 변수 시간만 있고 날짜가 하지 않으면 현재 날짜가 사용 됩니다는 style 매개 변수를 포함 합니다 DateTimeStyles.NoCurrentDateDefault 기본 날짜는 경우에 플래그 (DateTime.Date.MinValue) 사용 됩니다.If the s parameter contains only a time and no date, the current date is used unless the style parameter includes the DateTimeStyles.NoCurrentDateDefault flag, in which case the default date (DateTime.Date.MinValue) is used. 경우는 s 매개 변수에 포함만 날짜 및 시간, 자정 (00: 00:00) 사용 됩니다.If the s parameter contains only a date and no time, midnight (00:00:00) is used. style 매개 변수를 결정 하는지 여부를 합니다 s 매개 변수는 최고의 포함 될 수 있습니다, 중간 또는 후행 공백 문자에서 형식 문자열 중 하나에서 허용 하는 것 보다 다른 formats.The style parameter also determines whether the s parameter can contain leading, inner, or trailing white space characters other than those permitted by one of the format strings in formats.

하는 경우 s 없는 표준 시간대 정보를 포함 합니다 Kind 반환 된 속성 DateTime 개체가 DateTimeKind.Unspecified합니다.If s contains no time zone information, the Kind property of the returned DateTime object is DateTimeKind.Unspecified. 사용 하 여이 동작을 변경할 수 있습니다 합니다 DateTimeStyles.AssumeLocal 플래그를 반환 하는 DateTimeKind 속성이 DateTimeKind.Local, 또는 사용 하 여를 DateTimeStyles.AssumeUniversalDateTimeStyles.AdjustToUniversal 플래그를 반환 하는 DateTimeKind 속성은 DateTimeKind.Utc합니다.This behavior can be changed by using the DateTimeStyles.AssumeLocal flag, which returns a DateTime value whose Kind property is DateTimeKind.Local, or by using the DateTimeStyles.AssumeUniversal and DateTimeStyles.AdjustToUniversal flags, which returns a DateTime value whose Kind property is DateTimeKind.Utc. 하는 경우 s 표준 시간대 정보를 포함 필요에 따라 시간이 현지 시간으로 변환 됩니다 및 Kind 반환 된 속성 DateTime 개체를로 DateTimeKind.Local합니다.If s contains time zone information, the time is converted to local time, if necessary, and the Kind property of the returned DateTime object is set to DateTimeKind.Local. 사용 하 여이 동작을 변경할 수 있습니다 합니다 DateTimeStyles.RoundtripKind 하지 현지 시간을 utc (협정 세계시)를 변환 하 고 설정 하는 플래그를 Kind 속성을 DateTimeKind.Utc입니다.This behavior can be changed by using the DateTimeStyles.RoundtripKind flag to not convert Coordinated Universal Time (UTC) to a local time and set the Kind property to DateTimeKind.Utc.

합니다 formats 매개 변수 패턴의 배열을 포함 하는 중 s 구문 분석 작업이 성공 하는 경우에 정확히 일치 해야 합니다.The formats parameter contains an array of patterns, one of which s must match exactly if the parse operation is to succeed. 패턴을 formats 매개 변수에서 하나 이상의 사용자 지정 형식 지정자로 구성 됩니다 합니다 사용자 지정 날짜 및 시간 형식 문자열 테이블 또는에서 미리 정의 된 패턴을 식별 하는 단일 표준 형식 지정자를는 표준 날짜 및 시간 형식 문자열 테이블입니다.The patterns in the formats parameter consists of one or more custom format specifiers from the Custom Date and Time Format Strings table, or a single standard format specifier, which identifies a predefined pattern, from the Standard Date and Time Format Strings table.

사용자 지정 형식 패턴에 날짜 또는 시간 구분 기호를 사용 하지 않는 경우에 대 한 고정 문화권을 사용 합니다 provider 매개 변수와 가장 넓은 형식으로 각 사용자 지정 형식 지정자입니다.If you do not use date or time separators in a custom format pattern, use the invariant culture for the provider parameter and the widest form of each custom format specifier. 예를 들어 패턴에 시간을 지정 하려는 경우 "H" 형식 대신 더 광범위 한 형식, "HH"를 지정 합니다.For example, if you want to specify hours in the pattern, specify the wider form, "HH", instead of the narrower form, "H".

합니다 styles 하나 이상의 멤버를 포함 하는 매개 변수를 DateTimeStyles 공백에 정의 되지 않은 여부와 위치를 결정 하는 열거형 format 에 나타날 수 있습니다 s 구문 분석 작업의 정확한 동작을 제어 하 합니다.The styles parameter includes one or more members of the DateTimeStyles enumeration that determine whether and where white space not defined by format can appear in s and that control the precise behavior of the parse operation. 다음 표에서 각 방법의 멤버를 DateTimeStyles 열거형의 작업에 영향을 줍니다는 ParseExact(String, String, IFormatProvider, DateTimeStyles) 메서드.The following table describes how each member of the DateTimeStyles enumeration affects the operation of the ParseExact(String, String, IFormatProvider, DateTimeStyles) method.

DateTimeStyles 멤버DateTimeStyles member 설명Description
AdjustToUniversal 구문 분석 s 필요한 UTC로 변환 하는 경우.Parses s and, if necessary, converts it to UTC. 경우 s 표준 시간대 오프셋을 포함 이거나 s 시간대 정보가 없습니다 있지만 styles 포함 합니다 DateTimeStyles.AssumeLocal 플래그를 메서드 호출 문자열 구문 분석 ToUniversalTime 반환 된 변환할 DateTime 값을 UTC 를 가져오거나 설정 합니다 Kind 속성을 DateTimeKind.Utc입니다.If s includes a time zone offset, or if s contains no time zone information but styles includes the DateTimeStyles.AssumeLocal flag, the method parses the string, calls ToUniversalTime to convert the returned DateTime value to UTC, and sets the Kind property to DateTimeKind.Utc. 경우 s UTC를 나타냅니다 이거나 s 표준 시간대 정보를 포함 하지 있지만 styles 포함 합니다 DateTimeStyles.AssumeUniversal 플래그를 메서드 문자열을 구문 분석, 반환 된 표준 시간대 변환 작업 없이 수행 DateTime 값 집합과 합니다 Kind 속성을 DateTimeKind.Utc입니다.If s indicates that it represents UTC, or if s does not contain time zone information but styles includes the DateTimeStyles.AssumeUniversal flag, the method parses the string, performs no time zone conversion on the returned DateTime value, and sets the Kind property to DateTimeKind.Utc. 다른 모든 경우 플래그에는 영향을 주지 않습니다.In all other cases, the flag has no effect.
AllowInnerWhite 에 정의 되지 않은 공백이 지정 format 모든 개별 날짜 또는 시간 요소 사이 나타날 수 있습니다.Specifies that white space not defined by format can appear between any individual date or time element.
AllowLeadingWhite 지정 하 여 정의 되지 않은 공백이 format 부분에 나타날 수 있습니다 s합니다.Specifies that white space not defined by format can appear at the beginning of s.
AllowTrailingWhite 지정 하 여 정의 되지 않은 공백이 format 끝에 표시 될 수 있습니다 s합니다.Specifies that white space not defined by format can appear at the end of s.
AllowWhiteSpaces 형식임 s 선행, 내부 및 후행에 정의 되지 않은 공백을 포함할 수 있습니다 format합니다.Specifies that s may contain leading, inner, and trailing white spaces not defined by format.
AssumeLocal 지정 합니다 s 표준 시간대 정보가 없으면 로컬 시간을 나타내는 것으로 가정 합니다.Specifies that if s lacks any time zone information, it is assumed to represent a local time. 경우가 아니면 합니다 DateTimeStyles.AdjustToUniversal 플래그가 없으면 합니다 Kind 반환 된 속성 DateTime 값으로 설정 됩니다 DateTimeKind.Local.Unless the DateTimeStyles.AdjustToUniversal flag is present, the Kind property of the returned DateTime value is set to DateTimeKind.Local.
AssumeUniversal 지정 합니다 s 표준 시간대 정보가 없으면 UTC를 나타내는 것으로 가정 합니다.Specifies that if s lacks any time zone information, it is assumed to represent UTC. 경우가 아니면 합니다 DateTimeStyles.AdjustToUniversal 플래그가, 메서드가 반환 된 변환 하는 DateTime 값을 UTC에서 현지 시간 및 집합 해당 Kind 속성을 DateTimeKind.Local입니다.Unless the DateTimeStyles.AdjustToUniversal flag is present, the method converts the returned DateTime value from UTC to local time and sets its Kind property to DateTimeKind.Local.
NoCurrentDateDefault 하는 경우 s 시간 포함 날짜 정보 없이 반환 값의 날짜 설정 됩니다 DateTime.MinValue.Date합니다.If s contains time without date information, the date of the return value is set to DateTime.MinValue.Date.
None s 매개 변수는 기본값을 사용 하 여 구문 분석 됩니다.The s parameter is parsed using default values. 에 있는 이외의 공백이 없습니다 format 허용 됩니다.No white space other than that present in format is allowed. 하는 경우 s 날짜 구성 요소를 반환 된 날짜에 DateTime 값 1/1/0001로 설정 됩니다.If s lacks a date component, the date of the returned DateTime value is set to 1/1/0001. 경우 s 표준 시간대 정보가 없습니다 합니다 Kind 반환 된 속성 DateTime 개체를로 DateTimeKind.Unspecified합니다.If s contains no time zone information, the Kind property of the returned DateTime object is set to DateTimeKind.Unspecified. 표준 시간대 정보에 있는 경우 s, 시간이 현지 시간으로 변환 됩니다 및 Kind 반환 된 속성 DateTime 개체를로 DateTimeKind.Local합니다.If time zone information is present in s, the time is converted to local time and the Kind property of the returned DateTime object is set to DateTimeKind.Local.
RoundtripKind 표준 시간대 정보가 포함 된 문자열의 경우 하려고 사용 하 여 시간 및 날짜로 변환 되지 않도록 해당 Kind 속성이 설정 DateTimeKind.Local합니다.For strings that contain time zone information, tries to prevent the conversion to a date and time with its Kind property set to DateTimeKind.Local. 이 플래그는 주로 현지 시간을 UTC 시간으로 변환을 방지합니다.This flag primarily prevents the conversion of UTC times to local times.

특정 날짜 및 시간 기호 및 문자열 (예: 특정 언어로 요일 이름)에 사용 되는 s 가 정의한 합니다 provider 매개 변수를 그대로의 정확한 형식을 s 경우 format 표준 형식입니다 지정자 문자열입니다.The particular date and time symbols and strings (such as the names of the days of the week in a particular language) used in s are defined by the provider parameter, as is the precise format of s if format is a standard format specifier string. provider 매개 변수는 다음 중 하나일 수 있습니다.The provider parameter can be any of the following:

하는 경우 provider 됩니다 null, CultureInfo 현재 문화권에 해당 하는 개체를 사용 합니다.If provider is null, the CultureInfo object that corresponds to the current culture is used.

호출자 참고

.NET Framework 4.NET Framework 4, ParseExact 메서드가 throw를 FormatException 구문 분석 될 문자열 경우 시간 구성 요소 및 계약에 없는 AM/PM 지정자를 포함 합니다.In the .NET Framework 4.NET Framework 4, the ParseExact method throws a FormatException if the string to be parsed contains an hour component and an AM/PM designator that are not in agreement. .NET Framework 3.5.NET Framework 3.5 이전 버전에서는 AM/PM 지정자는 무시 됩니다.In the .NET Framework 3.5.NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.

추가 정보

적용 대상