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 ParseExact o 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 format pelo 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 os <elementos de data <> e hora > da representação de cadeia de caracteres de uma data e hora apareçam na formatordem especificada por s e que não tenham nenhum espaço em branco além daquele 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 o definir uma data sem nenhum elemento de hora e a operação de análise for bem DateTime sucedido, o valor resultante terá uma hora 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 o definir uma hora sem nenhum elemento de data e a operação de análise for bem DateTime sucedido, o valor DateTime.Now.Dateresultante terá uma data de.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 uma hora em um fuso horário específico e a operação de análise for bem sucedido Kind , a propriedade do DateTime valor retornado DateTimeKind.Unspecifiedserá.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 o representar o tempo em um determinado fuso horário e format permitir que as informações de fuso horário estejam presentes (por exemplo format , se for igual aos especificadores de formato "o", "r" ou "u", ou se ele contiver "z", "zz" ou "ZZZ" especificadores de formato personalizados), Kind a propriedade do valor DateTime retornado é 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 cadeias de caracteres de formato padrão de data e hora ou cadeias de caracteres de formato de data e hora personalizadas.For details about valid formatting codes, see Standard Date and Time Format Strings or Custom Date and Time Format Strings.

Observação

Se format for um padrão de formato personalizado que não inclui separadores de data ou hora (como "AAAAMMDDHHMM"), use a cultura invariável provider para o parâmetro e a forma mais ampla de cada especificador de formato 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 o formulário mais largo, "HH", em vez do formulário mais estreito, "H".For example, if you want to specify hours in the format pattern, specify the wider form, "HH", instead of the narrower form, "H".

Os símbolos e as cadeias de caracteres de data e hora específicos (como nomes dos dias da semana em um idioma específico) s usados no são definidos provider pelo parâmetro, como é o formato preciso s de format If é 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, o ParseExact método gera um FormatException se a cadeia de caracteres a ser analisada contiver um componente de hora e um designador AM/PM que não estão no contrato. .NET Framework 4.NET Framework 4In 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 No e em 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 ParseExact(String, String, IFormatProvider) o método.The following example demonstrates the ParseExact(String, String, IFormatProvider) method. Observe que a cadeia de caracteres "5/01/2009 8:30 am" não pode ser analisada com styles êxito quando DateTimeStyles.None o parâmetro é igual a, pois formatos espaços à esquerda não são permitidos pelo.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 "5/01/2009 09:00" não pode ser analisada format com êxito com um de "mm/dd/yyyyhh: mm" porque a cadeia de caracteres de data não precede o número do mês format com um zero à esquerda, como 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 format pelo 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 exige que os elementos s de data e hora sejam exibidos na ordem especificada por. formatIt also requires that the date and time elements in s appear in the order specified by format. Se s não corresponder ao padrão format do parâmetro, com style quaisquer variações definidas pelo parâmetro, o método lançará 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. Por outro lado, DateTime.Parse(String, IFormatProvider, DateTimeStyles) o método analisa a representação da cadeia de caracteres de uma data em qualquer um dos formatos reconhecidos pelo DateTimeFormatInfo objeto do provedor de formato.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 s hora no sejam exibidos 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 contiver apenas uma hora e nenhuma data, a data atual será usada, style a menos que DateTimeStyles.NoCurrentDateDefault o parâmetro inclua o sinalizador; nesse caso,DateTime.Date.MinValuea data padrão () será usada.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 contiver apenas uma data e nenhuma hora, meia-noite (00:00:00) será usada.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 contiver informações de fuso horário, a hora será convertida em hora local, se necessário Kind , e a propriedade DateTime do objeto retornado será DateTimeKind.Localdefinida como.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 para não converter o UTC (tempo Universal Coordenado) em uma hora local e para definir a Kind propriedade DateTimeKind.Utccomo.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 s do parâmetro.The format parameter defines the required pattern of the s parameter. Ele pode consistir em um ou mais especificadores de formato personalizados da tabela personalizada de cadeias de caracteres de formato de data e hora , ou um único especificador de formato padrão, que identifica um padrão predefinido, da tabela de cadeias de caracteres de formato de data e hora padrão .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 esteja em conformidade com um único formato para que a operação de análise seja bem sucedido, 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 provável de ser bem sucedido.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 da DateTimeStyles Enumeração afeta a operação ParseExact(String, String, IFormatProvider, DateTimeStyles) do 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, o tenta impedir DateTime a conversão em uma data e Kind hora de valor DateTimeKind.Localcom sua propriedade definida como.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, o ParseExact método gera um FormatException se a cadeia de caracteres a ser analisada contiver um componente de hora e um designador AM/PM que não estão no contrato. .NET Framework 4.NET Framework 4In 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 No e em 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 DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) o método para garantir que uma cadeia de caracteres em vários formatos possíveis possa 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 da cadeia de caracteres de uma data que corresponde a qualquer um dos padrões atribuídos formats ao 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 s de caracteres não corresponder a um desses padrões com nenhuma das variações definidas styles pelo parâmetro, o método lançará 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 comparar s com vários padrões de formatação, em vez de um único padrão de formatação, essa sobrecarga se comporta de DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) forma idêntica ao 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 a hora a serem analisados.The s parameter contains the date and time to parse. Se o s parâmetro contiver apenas uma hora e nenhuma data, a data atual será usada, style a menos que DateTimeStyles.NoCurrentDateDefault o parâmetro inclua o sinalizador; nesse caso,DateTime.Date.MinValuea data padrão () será usada.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 contiver apenas uma data e nenhuma hora, meia-noite (00:00:00) será usada.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 além daqueles permitidos por uma das cadeias de formatsformato no.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 contiver informações de fuso horário, a hora será convertida em hora local, se necessário Kind , e a propriedade DateTime do objeto retornado será DateTimeKind.Localdefinida como.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 para não converter o UTC (tempo Universal Coordenado) em uma hora local e definir a Kind propriedade DateTimeKind.Utccomo.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 for com sucesso.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 no formats parâmetro consistem em um ou mais especificadores de formato personalizado da tabela personalizada de cadeias de caracteres de formato de data e hora , ou um único especificador de formato padrão, que identifica um padrão predefinido, a partir da data padrão e Tabela de cadeias de caracteres de formato de hora.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 da DateTimeStyles Enumeração afeta a operação ParseExact(String, String, IFormatProvider, DateTimeStyles) do 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, o tenta impedir a conversão em uma data Kind e hora com DateTimeKind.Localsua propriedade definida como.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, o ParseExact método gera um FormatException se a cadeia de caracteres a ser analisada contiver um componente de hora e um designador AM/PM que não estão no contrato. .NET Framework 4.NET Framework 4In 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 No e em 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