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

Definição

Converte a representação da cadeia de caracteres especificada de uma data e hora no DateTime equivalente.Converts the specified string representation of a date and time to its DateTime equivalent. O formato da representação de cadeia de caracteres deverá corresponder exatamente a um formato especificado ou uma exceção será gerada.The format of the string representation must match a specified format exactly or an exception is thrown.

Sobrecargas

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

Converte a representação de cadeia de caracteres especificada de data e hora em seu equivalente DateTime usando o formato especificado e as informações de formato específicas da cultura.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format and culture-specific format information. O formato de representação da cadeia de caracteres deve corresponder exatamente ao formato especificado.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)

Converte a representação de cadeia de caracteres especificada de data e hora em seu equivalente DateTime usando o formato especificado, as informações de formato específicas da cultura e o estilo.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. O formato da representação de cadeia de caracteres deverá corresponder exatamente ao formato especificado ou uma exceção será gerada.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)

Converte a representação de cadeia de caracteres especificada de um data e hora no equivalente de DateTime usando a matriz de formatos, informações de formato específicas da cultura e estilo especificados.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. O formato da representação de cadeia de caracteres deverá corresponder a, pelo menos, um dos formatos especificados exatamente ou uma exceção será gerada.The format of the string representation must match at least one of the specified formats exactly or an exception is thrown.

Comentários

Importante

As eras nos calendários japoneses se baseiam no reinado do Imperador e, portanto, estão sujeitas a alterações.Eras in the Japanese calendars are based on the emperor's reign and are therefore expected to change. Por exemplo, 1º de maio de 2019 marcou o início da era Reiwa no JapaneseCalendar e no JapaneseLunisolarCalendar.For example, May 1, 2019 marked the beginning of the Reiwa era in the JapaneseCalendar and JapaneseLunisolarCalendar. Tal alteração de eras afeta todos os aplicativos que usam esses calendários.Such a change of era affects all applications that use these calendars. Veja Tratamento de uma nova era no calendário japonês no .NET para obter mais informações e para determinar se seus aplicativos são afetados.See Handling a new era in the Japanese calendar in .NET for more information and to determine whether your applications are affected. Veja Preparar seu aplicativo para a mudança de era no calendário japonês para obter informações sobre como testar seus aplicativos em sistemas Windows para assegurar que eles estejam preparados para a alteração de era.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. Confira Trabalhando com eras para ver recursos do .NET que dão suporte a calendários com várias eras e confira práticas recomendadas de trabalho com calendários que dão suporte a várias eras.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)

Converte a representação de cadeia de caracteres especificada de data e hora em seu equivalente DateTime usando o formato especificado e as informações de formato específicas da cultura.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format and culture-specific format information. O formato de representação da cadeia de caracteres deve corresponder exatamente ao formato especificado.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

Parâmetros

s
String String String String

Uma cadeia de caracteres que contém uma data e hora a ser convertida.A string that contains a date and time to convert.

format
String String String String

Um especificador de formato que define o formato obrigatório de s.A format specifier that defines the required format of s. Para obter mais informações, consulte a seção Comentários.For more information, see the Remarks section.

provider
IFormatProvider IFormatProvider IFormatProvider IFormatProvider

Um objeto que fornece informações de formato específicas de cultura sobre s.An object that supplies culture-specific format information about s.

Retornos

Um objeto equivalente à data e hora contida no s, conforme especificado por format e provider.An object that is equivalent to the date and time contained in s, as specified by format and provider.

Exceções

s ou format é uma cadeia de caracteres vazia.s or format is an empty string.

- ou --or- s não contém uma data e hora correspondente ao padrão especificado em format.s does not contain a date and time that corresponds to the pattern specified in format.

- ou --or- O componente de hora e o designador AM/PM no s não concordam.The hour component and the AM/PM designator in s do not agree.

Exemplos

O exemplo a seguir demonstra o ParseExact método.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.

Comentários

O DateTime.ParseExact(String, String, IFormatProvider) método analisa a representação de cadeia de caracteres de uma data, que deve estar no formato definido pelo format parâmetro.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. Ele também requer que o <data > e <tempo > elementos da representação de cadeia de caracteres de data e hora são exibidos na ordem especificada pela formate que s não ter nenhum espaço em branco que não seja permitido pelo 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. Se format define uma data com nenhum elemento de hora e a análise operação for bem-sucedida, resultante DateTime valor tem um tempo de meia-noite (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). Se format define uma hora com nenhum elemento de data e a análise operação for bem-sucedida, resultante DateTime valor tem uma data de 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.

Se s não representar um tempo em um determinado fuso horário e a operação de análise for bem-sucedida, o Kind propriedade de retornado DateTime valor é 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. Se s representam a hora em um determinado fuso horário e format permite que as informações de fuso horário esteja presente (por exemplo, se format é igual a "o", "r" ou especificadores de formato padrão "u", ou se contiver a "z", "zz" ou "zzz" especificadores de formato personalizado), o Kind propriedade retornada DateTime valor é 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.

O parâmetro format é uma cadeia de caracteres que contém um único especificador de formato padrão ou um ou mais especificadores de formato que definem o formato exigido de 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. Para obter detalhes sobre códigos de formatação válidos, consulte padrão de data e cadeias de caracteres de formato de hora ou Data personalizada e cadeias de caracteres de formato de hora.For details about valid formatting codes, see Standard Date and Time Format Strings or Custom Date and Time Format Strings.

Observação

Se format é um padrão de formato personalizado que não incluem os separadores de data ou hora (por exemplo, "Aaaammddhhmm"), use a cultura invariável para o provider especificador de formato de parâmetro e a forma mais ampla de cada personalizado.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. Por exemplo, se você quiser especificar horas no padrão de formato, especifique a forma mais ampla, "HH", em vez da forma mais estreita, "H".For example, if you want to specify hours in the format pattern, specify the wider form, "HH", instead of the narrower form, "H".

A data específica e símbolos de tempo e cadeias de caracteres (como nomes dos dias da semana em uma determinada linguagem) usadas no s são definidos pelo provider parâmetro, como é o formato preciso de s se format é um formato padrão cadeia de caracteres do especificador.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. O parâmetro provider pode ser um dos seguintes:The provider parameter can be any of the following:

Caso provider seja null, o objeto CultureInfo que corresponde à cultura atual é usado.If provider is null, the CultureInfo object that corresponds to the current culture is used.

Notas aos Chamadores

No .NET Framework 4.NET Framework 4, o ParseExact método lança um FormatException se a cadeia de caracteres a ser analisada contém um componente de hora e um designador AM/PM que não estão no contrato.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. No .NET Framework 3,5.NET Framework 3.5 e versões anteriores, o designador AM/PM é ignorado.In the .NET Framework 3,5.NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.

Veja também

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

Parâmetros

format
ReadOnlySpan<Char>

Retornos

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

Parâmetros

formats
String[]

Retornos

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

Converte a representação de cadeia de caracteres especificada de data e hora em seu equivalente DateTime usando o formato especificado, as informações de formato específicas da cultura e o estilo.Converts the specified string representation of a date and time to its DateTime equivalent using the specified format, culture-specific format information, and style. O formato da representação de cadeia de caracteres deverá corresponder exatamente ao formato especificado ou uma exceção será gerada.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

Parâmetros

s
String String String String

Uma cadeia de caracteres contendo uma data e hora a ser convertida.A string containing a date and time to convert.

format
String String String String

Um especificador de formato que define o formato obrigatório de s.A format specifier that defines the required format of s. Para obter mais informações, consulte a seção Comentários.For more information, see the Remarks section.

provider
IFormatProvider IFormatProvider IFormatProvider IFormatProvider

Um objeto que fornece informações de formatação específicas de cultura sobre s.An object that supplies culture-specific formatting information about s.

style
DateTimeStyles DateTimeStyles DateTimeStyles DateTimeStyles

Uma combinação bit a bit dos valores de enumeração que fornece informações adicionais sobre s, sobre elementos de estilo que podem estar presentes em s ou sobre a conversão de s para um valor de 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. Um valor típico a ser especificado é None.A typical value to specify is None.

Retornos

Um objeto equivalente à data e hora contida no s, conforme especificado por format, provider e style.An object that is equivalent to the date and time contained in s, as specified by format, provider, and style.

Exceções

s ou format é uma cadeia de caracteres vazia.s or format is an empty string.

- ou --or- s não contém uma data e hora correspondente ao padrão especificado em format.s does not contain a date and time that corresponds to the pattern specified in format.

- ou --or- O componente de hora e o designador AM/PM no s não concordam.The hour component and the AM/PM designator in s do not agree.

style contém uma combinação inválida de valores DateTimeStyles.style contains an invalid combination of DateTimeStyles values. Por exemplo, AssumeLocal e AssumeUniversal.For example, both AssumeLocal and AssumeUniversal.

Exemplos

O exemplo a seguir demonstra o ParseExact(String, String, IFormatProvider) método.The following example demonstrates the ParseExact(String, String, IFormatProvider) method. Observe que a cadeia de caracteres "01/5/2009 8H30" não pode ser analisado com êxito quando o styles for igual ao parâmetro DateTimeStyles.None porque os espaços à esquerda não são permitidos por 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. Além disso, a cadeia de caracteres "01/5/2009 09:00" não pode ser analisado com êxito com um format de "MM/dd/yyyyhh:mm" porque a cadeia de caracteres de data não precede o número do mês com um zero à esquerda, como format requer.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).

Comentários

O DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) método analisa a representação de cadeia de caracteres de uma data, que deve estar em um formato definido pelo format parâmetro.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. Ele também requer que os elementos de data e hora em s aparecem na ordem especificada pela format.It also requires that the date and time elements in s appear in the order specified by format. Se s não coincide com o padrão do format parâmetro, com qualquer variação definido pelo style parâmetro, o método lança um 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. Em contraste, o DateTime.Parse(String, IFormatProvider, DateTimeStyles) método analisa a representação de cadeia de caracteres de uma data em qualquer um dos formatos reconhecidas pelo provedor de formato DateTimeFormatInfo objeto.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. O DateTime.Parse(String, IFormatProvider, DateTimeStyles) método também permite que os elementos de data e hora em s para aparecer em qualquer ordem.The DateTime.Parse(String, IFormatProvider, DateTimeStyles) method also allows the date and time elements in s to appear in any order.

Se o s parâmetro contém apenas uma vez e nenhuma data, a data atual é usada, a menos que o style parâmetro inclui o DateTimeStyles.NoCurrentDateDefault sinalizar, caso em que a data padrão (DateTime.Date.MinValue) é usado.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. Se o s parâmetro não contém apenas uma data e nenhuma hora, meia-noite (00: 00:00) é usado.If the s parameter contains only a date and no time, midnight (00:00:00) is used. O style parâmetro também determina se o s parâmetro pode conter caracteres de espaço em branco à esquerda, interna ou à direita.The style parameter also determines whether the s parameter can contain leading, inner, or trailing white space characters.

Caso s não contenha informações de fuso horário, a propriedade Kind do objeto DateTime retornado é DateTimeKind.Unspecified.If s contains no time zone information, the Kind property of the returned DateTime object is DateTimeKind.Unspecified. Este comportamento pode ser alterado usando-se o sinalizador DateTimeStyles.AssumeLocal, que retorna um valor DateTime cuja propriedade Kind é DateTimeKind.Local ou usando-se os sinalizadores DateTimeStyles.AssumeUniversal e DateTimeStyles.AdjustToUniversal, que retorna um valor DateTime cuja propriedade Kind é 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. Se s contém informações de fuso horário, a hora é convertida para a hora local, se necessário e o Kind propriedade de retornado DateTime objeto é definido como 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. Esse comportamento pode ser alterado usando o DateTimeStyles.RoundtripKind sinalizador não converter o tempo Universal Coordenado (UTC) em uma hora local e definir o Kind propriedade 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.

O format parâmetro define o padrão necessário do s parâmetro.The format parameter defines the required pattern of the s parameter. Ele pode consistir em um ou mais especificadores de formato personalizado do personalizado de data e cadeias de caracteres de formato de hora tabela ou um especificador de formato único padrão, que identifica um padrão predefinido, da padrão de data e Cadeias de caracteres de formato de hora tabela.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.

Caso você não use separadores de data ou hora em um padrão de formato personalizado, use a cultura invariável do parâmetro provider e a forma mais ampla de cada especificador de formato personalizado.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. Por exemplo, caso você queira especificar horas no padrão, especifique a forma mais ampla, "HH", em vez da forma mais estreita, "H".For example, if you want to specify hours in the pattern, specify the wider form, "HH", instead of the narrower form, "H".

Observação

Em vez de exigir que s estão em conformidade com um único formato para a operação de análise seja bem-sucedida, você pode chamar o DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) método e especificar vários formatos permitidos.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. Isso torna a operação de análise mais probabilidade de êxito.This makes the parse operation more likely to succeed.

O parâmetro styles inclui um ou mais membros da enumeração DateTimeStyles que determinam se e onde o espaço em branco não definido por format pode aparecer em s e que controlam o comportamento preciso da operação de análise.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. A tabela a seguir descreve como cada membro de DateTimeStyles enumeração afeta a operação do ParseExact(String, String, IFormatProvider, DateTimeStyles) método.The following table describes how each member of the DateTimeStyles enumeration affects the operation of the ParseExact(String, String, IFormatProvider, DateTimeStyles) method.

Membro DateTimeStylesDateTimeStyles member DescriçãoDescription
AdjustToUniversal Analisa s e, caso necessário, converte-o em UTC.Parses s and, if necessary, converts it to UTC. Caso s inclua um deslocamento de fuso horário ou caso s não contenha informações de fuso horário, mas styles inclua o sinalizador DateTimeStyles.AssumeLocal, o método analisa a cadeia de caracteres, chama ToUniversalTime para converter o valor DateTime retornado em UTC e define a propriedade Kind como 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. Caso s indique que ele representa o UTC ou caso s não contenha informações de fuso horário, mas styles inclua o sinalizador DateTimeStyles.AssumeUniversal, o método analisa a cadeia de caracteres, não executa nenhuma conversão de fuso horário no valor DateTime retornado e define a propriedade Kind a 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. Em todos os outros casos, o sinalizador não entra em vigor.In all other cases, the flag has no effect.
AllowInnerWhite Especifica que o espaço em branco não definido por format pode ser exibido entre qualquer elemento de data ou hora individual.Specifies that white space not defined by format can appear between any individual date or time element.
AllowLeadingWhite Especifica que o espaço em branco não definido por format pode ser exibido no início de s.Specifies that white space not defined by format can appear at the beginning of s.
AllowTrailingWhite Especifica que o espaço em branco não definido por format pode ser exibido no final de s.Specifies that white space not defined by format can appear at the end of s.
AllowWhiteSpaces Especifica que s pode conter espaços em branco à esquerda, internos, e à direita não definidos por format.Specifies that s may contain leading, inner, and trailing white spaces not defined by format.
AssumeLocal Especifica que, caso s não tenha informações de fuso horário, pressupõe-se que ele represente uma hora local.Specifies that if s lacks any time zone information, it is assumed to represent a local time. A menos que o sinalizador DateTimeStyles.AdjustToUniversal esteja presente, a propriedade Kind do valor DateTime retornado é definida como DateTimeKind.Local.Unless the DateTimeStyles.AdjustToUniversal flag is present, the Kind property of the returned DateTime value is set to DateTimeKind.Local.
AssumeUniversal Especifica que, caso s não tenha informações de fuso horário, pressupõe-se que ele represente o UTC.Specifies that if s lacks any time zone information, it is assumed to represent UTC. A menos que o sinalizador DateTimeStyles.AdjustToUniversal esteja presente, o método converte o valor DateTime retornado do UTC na hora local e define a propriedade Kind como 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 Caso s contenha hora sem informações de data, a data do valor de retorno é definida como DateTime.MinValue.Date.If s contains time without date information, the date of the return value is set to DateTime.MinValue.Date.
None O parâmetro s é analisado usando-se valores padrão.The s parameter is parsed using default values. Nenhum espaço em branco senão presente em format é permitido.No white space other than that present in format is allowed. Caso s não tenha um componente de data, a data do valor DateTime retornado é definida como 1/1/0001.If s lacks a date component, the date of the returned DateTime value is set to 1/1/0001. Caso s não contenha informações de fuso horário, a propriedade Kind do objeto DateTime retornado é definida como DateTimeKind.Unspecified.If s contains no time zone information, the Kind property of the returned DateTime object is set to DateTimeKind.Unspecified. Caso informações de fuso horário estejam presentes em s, a hora é convertida na hora local e a propriedade Kind do objeto DateTime retornado é definida como 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 Para cadeias de caracteres que contêm informações de fuso horário, tenta impedir que a conversão em um DateTime valor de data e hora com seu Kind propriedade definida como 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. Este sinalizador impede principalmente a conversão de horas UTC em horas locais.This flag primarily prevents the conversion of UTC times to local times.

Os símbolos de data e hora e as cadeias de caracteres específicos (como os nomes dos dias da semana em um idioma específico) usados em s são definidos pelo parâmetro provider, como o formato preciso de s caso format seja uma cadeia de caracteres do especificador de formato padrão.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. O parâmetro provider pode ser um dos seguintes:The provider parameter can be any of the following:

Caso provider seja null, o objeto CultureInfo que corresponde à cultura atual é usado.If provider is null, the CultureInfo object that corresponds to the current culture is used.

Notas aos Chamadores

No .NET Framework 4.NET Framework 4, o ParseExact método lança um FormatException se a cadeia de caracteres a ser analisada contém um componente de hora e um designador AM/PM que não estão no contrato.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. No .NET Framework 3,5.NET Framework 3.5 e versões anteriores, o designador AM/PM é ignorado.In the .NET Framework 3,5.NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.

Veja também

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

Converte a representação de cadeia de caracteres especificada de um data e hora no equivalente de DateTime usando a matriz de formatos, informações de formato específicas da cultura e estilo especificados.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. O formato da representação de cadeia de caracteres deverá corresponder a, pelo menos, um dos formatos especificados exatamente ou uma exceção será gerada.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

Parâmetros

s
String String String String

Uma cadeia de caracteres que contém uma data e hora a ser convertida.A string that contains a date and time to convert.

formats
String[]

Uma matriz de formatos permitidos de s.An array of allowable formats of s. Para obter mais informações, consulte a seção Comentários.For more information, see the Remarks section.

provider
IFormatProvider IFormatProvider IFormatProvider IFormatProvider

Um objeto que fornece informações de formato específicas de cultura sobre s.An object that supplies culture-specific format information about s.

style
DateTimeStyles DateTimeStyles DateTimeStyles DateTimeStyles

Um combinação bit a bit de valores de enumeração que indica o formato permitido de s.A bitwise combination of enumeration values that indicates the permitted format of s. Um valor típico a ser especificado é None.A typical value to specify is None.

Retornos

Um objeto equivalente à data e hora contida no s, conforme especificado por formats, provider e style.An object that is equivalent to the date and time contained in s, as specified by formats, provider, and style.

Exceções

s é uma cadeia de caracteres vazia.s is an empty string.

- ou --or- um elemento de formats é uma cadeia de caracteres vazia.an element of formats is an empty string.

- ou --or- s não contém uma data e hora que corresponde a nenhum elemento de formats.s does not contain a date and time that corresponds to any element of formats.

- ou --or- O componente de hora e o designador AM/PM no s não concordam.The hour component and the AM/PM designator in s do not agree.

style contém uma combinação inválida de valores DateTimeStyles.style contains an invalid combination of DateTimeStyles values. Por exemplo, AssumeLocal e AssumeUniversal.For example, both AssumeLocal and AssumeUniversal.

Exemplos

O exemplo a seguir usa o DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) método para garantir que uma cadeia de caracteres em um número de possíveis formatos pode ser analisada com êxito.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.

Comentários

O DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) método analisa a representação de cadeia de caracteres de uma data que corresponde a qualquer um dos padrões atribuído para o formats parâmetro.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. Se a cadeia de caracteres s não corresponder a qualquer um desses padrões com qualquer uma das variações definidas pelo styles parâmetro, o método lança um 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. Além de comparando s para vários padrões de formatação, em vez de um único padrão de formatação, essa sobrecarga se comporta de forma idêntica ao DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) método.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.

O s parâmetro contém a data e hora para analisar.The s parameter contains the date and time to parse. Se o s parâmetro contém apenas uma vez e nenhuma data, a data atual é usada, a menos que o style parâmetro inclui o DateTimeStyles.NoCurrentDateDefault sinalizar, caso em que a data padrão (DateTime.Date.MinValue) é usado.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. Se o s parâmetro não contém apenas uma data e nenhuma hora, meia-noite (00: 00:00) é usado.If the s parameter contains only a date and no time, midnight (00:00:00) is used. O style parâmetro também determina se o s parâmetro pode conter líderes, espaço em branco interno ou à direita caracteres diferentes daqueles permitido por uma das cadeias de caracteres de formato no 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.

Caso s não contenha informações de fuso horário, a propriedade Kind do objeto DateTime retornado é DateTimeKind.Unspecified.If s contains no time zone information, the Kind property of the returned DateTime object is DateTimeKind.Unspecified. Este comportamento pode ser alterado usando-se o sinalizador DateTimeStyles.AssumeLocal, que retorna um valor DateTime cuja propriedade Kind é DateTimeKind.Local ou usando-se os sinalizadores DateTimeStyles.AssumeUniversal e DateTimeStyles.AdjustToUniversal, que retorna um valor DateTime cuja propriedade Kind é 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. Se s contém informações de fuso horário, a hora é convertida para a hora local, se necessário e o Kind propriedade de retornado DateTime objeto é definido como 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. Esse comportamento pode ser alterado usando o DateTimeStyles.RoundtripKind sinalizador não converter o tempo Universal Coordenado (UTC) em uma hora local e definir o Kind propriedade 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.

O formats parâmetro contém uma matriz de padrões, um dos quais s deve corresponder exatamente, se a operação de análise seja bem-sucedida.The formats parameter contains an array of patterns, one of which s must match exactly if the parse operation is to succeed. Os padrões a formats parâmetro consiste em um ou mais especificadores de formato personalizado do personalizado de data e cadeias de caracteres de formato de hora tabela ou um especificador de formato único padrão, que identifica um padrão predefinido, da Padrão de data e cadeias de caracteres de formato de hora tabela.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.

Caso você não use separadores de data ou hora em um padrão de formato personalizado, use a cultura invariável do parâmetro provider e a forma mais ampla de cada especificador de formato personalizado.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. Por exemplo, caso você queira especificar horas no padrão, especifique a forma mais ampla, "HH", em vez da forma mais estreita, "H".For example, if you want to specify hours in the pattern, specify the wider form, "HH", instead of the narrower form, "H".

O parâmetro styles inclui um ou mais membros da enumeração DateTimeStyles que determinam se e onde o espaço em branco não definido por format pode aparecer em s e que controlam o comportamento preciso da operação de análise.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. A tabela a seguir descreve como cada membro de DateTimeStyles enumeração afeta a operação do ParseExact(String, String, IFormatProvider, DateTimeStyles) método.The following table describes how each member of the DateTimeStyles enumeration affects the operation of the ParseExact(String, String, IFormatProvider, DateTimeStyles) method.

Membro DateTimeStylesDateTimeStyles member DescriçãoDescription
AdjustToUniversal Analisa s e, caso necessário, converte-o em UTC.Parses s and, if necessary, converts it to UTC. Caso s inclua um deslocamento de fuso horário ou caso s não contenha informações de fuso horário, mas styles inclua o sinalizador DateTimeStyles.AssumeLocal, o método analisa a cadeia de caracteres, chama ToUniversalTime para converter o valor DateTime retornado em UTC e define a propriedade Kind como 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. Caso s indique que ele representa o UTC ou caso s não contenha informações de fuso horário, mas styles inclua o sinalizador DateTimeStyles.AssumeUniversal, o método analisa a cadeia de caracteres, não executa nenhuma conversão de fuso horário no valor DateTime retornado e define a propriedade Kind a 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. Em todos os outros casos, o sinalizador não entra em vigor.In all other cases, the flag has no effect.
AllowInnerWhite Especifica que o espaço em branco não definido por format pode ser exibido entre qualquer elemento de data ou hora individual.Specifies that white space not defined by format can appear between any individual date or time element.
AllowLeadingWhite Especifica que o espaço em branco não definido por format pode ser exibido no início de s.Specifies that white space not defined by format can appear at the beginning of s.
AllowTrailingWhite Especifica que o espaço em branco não definido por format pode ser exibido no final de s.Specifies that white space not defined by format can appear at the end of s.
AllowWhiteSpaces Especifica que s pode conter espaços em branco à esquerda, internos, e à direita não definidos por format.Specifies that s may contain leading, inner, and trailing white spaces not defined by format.
AssumeLocal Especifica que, caso s não tenha informações de fuso horário, pressupõe-se que ele represente uma hora local.Specifies that if s lacks any time zone information, it is assumed to represent a local time. A menos que o sinalizador DateTimeStyles.AdjustToUniversal esteja presente, a propriedade Kind do valor DateTime retornado é definida como DateTimeKind.Local.Unless the DateTimeStyles.AdjustToUniversal flag is present, the Kind property of the returned DateTime value is set to DateTimeKind.Local.
AssumeUniversal Especifica que, caso s não tenha informações de fuso horário, pressupõe-se que ele represente o UTC.Specifies that if s lacks any time zone information, it is assumed to represent UTC. A menos que o sinalizador DateTimeStyles.AdjustToUniversal esteja presente, o método converte o valor DateTime retornado do UTC na hora local e define a propriedade Kind como 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 Caso s contenha hora sem informações de data, a data do valor de retorno é definida como DateTime.MinValue.Date.If s contains time without date information, the date of the return value is set to DateTime.MinValue.Date.
None O parâmetro s é analisado usando-se valores padrão.The s parameter is parsed using default values. Nenhum espaço em branco senão presente em format é permitido.No white space other than that present in format is allowed. Caso s não tenha um componente de data, a data do valor DateTime retornado é definida como 1/1/0001.If s lacks a date component, the date of the returned DateTime value is set to 1/1/0001. Caso s não contenha informações de fuso horário, a propriedade Kind do objeto DateTime retornado é definida como DateTimeKind.Unspecified.If s contains no time zone information, the Kind property of the returned DateTime object is set to DateTimeKind.Unspecified. Caso informações de fuso horário estejam presentes em s, a hora é convertida na hora local e a propriedade Kind do objeto DateTime retornado é definida como 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 Para cadeias de caracteres que contêm informações de fuso horário, tenta impedir que a conversão para uma data e hora com seu Kind propriedade definida como 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. Este sinalizador impede principalmente a conversão de horas UTC em horas locais.This flag primarily prevents the conversion of UTC times to local times.

Os símbolos de data e hora e as cadeias de caracteres específicos (como os nomes dos dias da semana em um idioma específico) usados em s são definidos pelo parâmetro provider, como o formato preciso de s caso format seja uma cadeia de caracteres do especificador de formato padrão.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. O parâmetro provider pode ser um dos seguintes:The provider parameter can be any of the following:

Caso provider seja null, o objeto CultureInfo que corresponde à cultura atual é usado.If provider is null, the CultureInfo object that corresponds to the current culture is used.

Notas aos Chamadores

No .NET Framework 4.NET Framework 4, o ParseExact método lança um FormatException se a cadeia de caracteres a ser analisada contém um componente de hora e um designador AM/PM que não estão no contrato.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. No .NET Framework 3,5.NET Framework 3.5 e versões anteriores, o designador AM/PM é ignorado.In the .NET Framework 3,5.NET Framework 3.5 and earlier versions, the AM/PM designator is ignored.

Veja também

Aplica-se a