DateTime.TryParseExact Método

Definição

Converte a representação de cadeias especificada de uma data e hora para o seu DateTime equivalente. O formato da representação da cadeia deve corresponder exatamente a um formato especificado. O método devolve um valor que indica se a conversão foi bem-sucedida.

Sobrecargas

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

Converte a representação do intervalo especificada de uma data e hora para o seu DateTime equivalente usando o formato especificado, informação de formato específica da cultura e estilo. O formato da representação da cadeia deve corresponder exatamente ao formato especificado. O método devolve um valor que indica se a conversão foi bem-sucedida.

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

Converte o intervalo de caracteres especificado de uma data e hora para o seu DateTime equivalente e devolve um valor que indica se a conversão foi bem-sucedida.

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

Converte a representação em cadeia especificada de uma data e hora para o seu DateTime equivalente usando o formato especificado, informação de formato específica da cultura e estilo. O formato da representação da cadeia deve corresponder exatamente ao formato especificado. O método devolve um valor que indica se a conversão foi bem-sucedida.

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

Converte a representação de cadeias especificada de uma data e hora para o seu DateTime equivalente usando o array especificado de formatos, informação de formato específica de cultura e estilo. O formato da representação da cadeia deve corresponder exatamente a um dos formatos especificados. O método devolve um valor que indica se a conversão foi bem-sucedida.

Observações

Importante

As eras nos calendários japoneses são baseadas no reinado do imperador e, portanto, espera-se que mudem. Por exemplo, 1º de maio de 2019 marcou o início da era Reiwa no JapaneseCalendar e JapaneseLunisolarCalendar. Essa mudança de era afeta todos os aplicativos que usam esses calendários. Para obter mais informações e determinar se seus aplicativos são afetados, consulte Manipulando uma nova era no calendário japonês no .NET. Para obter informações sobre como testar seus aplicativos em sistemas Windows para garantir sua prontidão para a mudança de era, consulte Preparar seu aplicativo para a mudança de era japonesa. Para obter recursos no .NET que oferecem suporte a calendários com várias eras e práticas recomendadas ao trabalhar com calendários que suportam várias eras, consulte Trabalhando com eras.

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

Converte a representação do intervalo especificada de uma data e hora para o seu DateTime equivalente usando o formato especificado, informação de formato específica da cultura e estilo. O formato da representação da cadeia deve corresponder exatamente ao formato especificado. O método devolve um valor que indica se a conversão foi bem-sucedida.

public:
 static bool TryParseExact(ReadOnlySpan<char> s, ReadOnlySpan<char> format, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParseExact(ReadOnlySpan<char> s, ReadOnlySpan<char> format, IFormatProvider provider, System.Globalization.DateTimeStyles style, out DateTime result);
static member TryParseExact : ReadOnlySpan<char> * ReadOnlySpan<char> * IFormatProvider * System.Globalization.DateTimeStyles * DateTime -> bool
Public Shared Function TryParseExact (s As ReadOnlySpan(Of Char), format As ReadOnlySpan(Of Char), provider As IFormatProvider, style As DateTimeStyles, ByRef result As DateTime) As Boolean

Parâmetros

s
ReadOnlySpan<Char>

Um espaço que contém os caracteres que representam uma data e hora para converter.

format
ReadOnlySpan<Char>

O formato exigido de s.

provider
IFormatProvider

Um objeto que fornece informação de formatação específica de cultura sobre s.

style
DateTimeStyles

Uma combinação bit a bit de um ou mais valores de enumeração que indicam o formato permitido de s.

result
DateTime

Quando este método retorna, contém o DateTime valor equivalente à data e hora contidas em s, se a conversão foi bem-sucedida, ou DateTime.MinValue se a conversão falhou. A conversão falha se o s parâmetro ou format for null, for uma cadeia vazia, ou não contiver uma data e hora que correspondam ao padrão especificado em format. Este parâmetro é passado sem inicializar.

Devoluções

true se s foi convertido com sucesso; caso contrário, false.

Exceções

O comprimento de format é 1, e não é um dos caracteres especificadores de formato definidos para DateTimeFormatInfo.

-ou-

format não contém um padrão de formato personalizado válido.

style não é um valor válido DateTimeStyles .

-ou-

style contém uma combinação inválida de DateTimeStyles valores (por exemplo, tanto AssumeLocal como AssumeUniversal).

Aplica-se a

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

Converte o intervalo de caracteres especificado de uma data e hora para o seu DateTime equivalente e devolve um valor que indica se a conversão foi bem-sucedida.

public:
 static bool TryParseExact(ReadOnlySpan<char> s, cli::array <System::String ^> ^ formats, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParseExact(ReadOnlySpan<char> s, string[] formats, IFormatProvider provider, System.Globalization.DateTimeStyles style, out DateTime result);
static member TryParseExact : ReadOnlySpan<char> * string[] * IFormatProvider * System.Globalization.DateTimeStyles * DateTime -> bool
Public Shared Function TryParseExact (s As ReadOnlySpan(Of Char), formats As String(), provider As IFormatProvider, style As DateTimeStyles, ByRef result As DateTime) As Boolean

Parâmetros

s
ReadOnlySpan<Char>

O intervalo que contém a cadeia a analisar.

formats
String[]

Um conjunto de formatos permitidos de s.

provider
IFormatProvider

Um objeto que fornece informação de formatação específica de cultura sobre s.

style
DateTimeStyles

Uma combinação bit a bit de valores de enumeração que define como interpretar a data analisada em relação ao fuso horário atual ou à data atual. Um valor típico a especificar é None.

result
DateTime

Quando este método retorna, contém o DateTime valor equivalente à data e hora contidas em s, se a conversão foi bem-sucedida, ou DateTime.MinValue se a conversão falhou. A conversão falha se o s parâmetro for null, for Empty, ou não contiver uma representação válida de uma sequência de uma data e hora. Este parâmetro é passado sem inicializar.

Devoluções

true se s foi convertido com sucesso; caso contrário, false.

Exceções

O comprimento de um elemento em formats é 1, e não é um dos caracteres especificadores de formato definidos para DateTimeFormatInfo.

style não é um valor válido DateTimeStyles .

-ou-

style contém uma combinação inválida de DateTimeStyles valores (por exemplo, tanto AssumeLocal como AssumeUniversal).

Aplica-se a

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

Converte a representação em cadeia especificada de uma data e hora para o seu DateTime equivalente usando o formato especificado, informação de formato específica da cultura e estilo. O formato da representação da cadeia deve corresponder exatamente ao formato especificado. O método devolve um valor que indica se a conversão foi bem-sucedida.

public:
 static bool TryParseExact(System::String ^ s, System::String ^ format, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParseExact(string s, string format, IFormatProvider provider, System.Globalization.DateTimeStyles style, out DateTime result);
static member TryParseExact : string * string * IFormatProvider * System.Globalization.DateTimeStyles * DateTime -> bool
Public Shared Function TryParseExact (s As String, format As String, provider As IFormatProvider, style As DateTimeStyles, ByRef result As DateTime) As Boolean

Parâmetros

s
String

Uma cadeia contendo uma data e hora para converter.

format
String

O formato exigido de s.

provider
IFormatProvider

Um objeto que fornece informação de formatação específica de cultura sobre s.

style
DateTimeStyles

Uma combinação bit a bit de um ou mais valores de enumeração que indicam o formato permitido de s.

result
DateTime

Quando este método retorna, contém o DateTime valor equivalente à data e hora contidas em s, se a conversão foi bem-sucedida, ou DateTime.MinValue se a conversão falhou. A conversão falha se o s parâmetro ou format for null, for uma cadeia vazia, ou não contiver uma data e hora que correspondam ao padrão especificado em format. Este parâmetro é passado sem inicializar.

Devoluções

true se s foi convertido com sucesso; caso contrário, false.

Exceções

O comprimento de format é 1, e não é um dos caracteres especificadores de formato definidos para DateTimeFormatInfo.

-ou-

format não contém um padrão de formato personalizado válido.

style não é um valor válido DateTimeStyles .

-ou-

style contém uma combinação inválida de DateTimeStyles valores (por exemplo, tanto AssumeLocal como AssumeUniversal).

Exemplos

O exemplo seguinte demonstra o DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) método. Note que a cadeia "5/01/2009 8:30 AM" não pode ser analisada com sucesso quando o styles parâmetro é DateTimeStyles.None igual porque espaços à frente não são permitidos por format. Além disso, a cadeia "5/01/2009 09:00" não pode ser interpretada com sucesso com a format de "MM/dd/yyyyhh:mm" porque a cadeia de data não precede o número do mês com um zero inicial, como format exige.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      CultureInfo enUS = new CultureInfo("en-US");
      string dateString;
      DateTime dateValue;

      // Parse date with no style flags.
      dateString = " 5/01/2009 8:30 AM";
      if (DateTime.TryParseExact(dateString, "g", enUS,
                                 DateTimeStyles.None, out dateValue))
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
                           dateValue.Kind);
      else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);

      // Allow a leading space in the date string.
      if (DateTime.TryParseExact(dateString, "g", enUS,
                                 DateTimeStyles.AllowLeadingWhite, out dateValue))
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
                           dateValue.Kind);
      else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);

      // Use custom formats with M and MM.
      dateString = "5/01/2009 09:00";
      if (DateTime.TryParseExact(dateString, "M/dd/yyyy hh:mm", enUS,
                                 DateTimeStyles.None, out dateValue))
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
                           dateValue.Kind);
      else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);

      // Allow a leading space in the date string.
      if (DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm", enUS,
                              DateTimeStyles.None, out dateValue))
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
                           dateValue.Kind);
      else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);

      // Parse a string with time zone information.
      dateString = "05/01/2009 01:30:42 PM -05:00";
      if (DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS,
                              DateTimeStyles.None, out dateValue))
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
                           dateValue.Kind);
      else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);

      // Allow a leading space in the date string.
      if (DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS,
                              DateTimeStyles.AdjustToUniversal, out dateValue))
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
                           dateValue.Kind);
      else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);

      // Parse a string representing UTC.
      dateString = "2008-06-11T16:11:20.0904778Z";
      if (DateTime.TryParseExact(dateString, "o", CultureInfo.InvariantCulture,
                                     DateTimeStyles.None, out dateValue))
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
                           dateValue.Kind);
      else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);

      if (DateTime.TryParseExact(dateString, "o", CultureInfo.InvariantCulture,
                                 DateTimeStyles.RoundtripKind, out dateValue))
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue,
                           dateValue.Kind);
      else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString);
   }
}
// The example displays the following output:
//    ' 5/01/2009 8:30 AM' is not in an acceptable format.
//    Converted ' 5/01/2009 8:30 AM' to 5/1/2009 8:30:00 AM (Unspecified).
//    Converted '5/01/2009 09:00' to 5/1/2009 9:00:00 AM (Unspecified).
//    '5/01/2009 09:00' is not in an acceptable format.
//    Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 11:30:42 AM (Local).
//    Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 6:30:42 PM (Utc).
//    Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 9:11:20 AM (Local).
//    Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 4:11:20 PM (Utc).
open System
open System.Globalization

[<EntryPoint>]
let main _ =
    let enUS = CultureInfo "en-US"

    // Parse date with no style flags.
    let dateString = " 5/01/2009 8:30 AM"
    match DateTime.TryParseExact(dateString, "g", enUS, DateTimeStyles.None) with
    | true, dateValue ->
        printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."              
    | _ ->
        printfn $"'{dateString}' is not in an acceptable format."

    // Allow a leading space in the date string.
    match DateTime.TryParseExact(dateString, "g", enUS, DateTimeStyles.AllowLeadingWhite) with
    | true, dateValue ->
        printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
    | _ ->
        printfn $"'{dateString}' is not in an acceptable format."

    // Use custom formats with M and MM.
    let dateString = "5/01/2009 09:00"
    match DateTime.TryParseExact(dateString, "M/dd/yyyy hh:mm", enUS, DateTimeStyles.None) with
    | true, dateValue ->
        printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
    | _ ->
        printfn $"'{dateString}' is not in an acceptable format."

    // Allow a leading space in the date string.
    match DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm", enUS, DateTimeStyles.None) with
    | true, dateValue ->
        printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
    | _ ->
        printfn $"'{dateString}' is not in an acceptable format."

    // Parse a string with time zone information.
    let dateString = "05/01/2009 01:30:42 PM -05:00"
    match DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, DateTimeStyles.None) with
    | true, dateValue ->
        printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
    | _ ->
        printfn $"'{dateString}' is not in an acceptable format."

    // Allow a leading space in the date string.
    match DateTime.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, DateTimeStyles.AdjustToUniversal) with
    | true, dateValue ->
        printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
    | _ ->
        printfn $"'{dateString}' is not in an acceptable format."

    // Parse a string representing UTC.
    let dateString = "2008-06-11T16:11:20.0904778Z"
    match DateTime.TryParseExact(dateString, "o", CultureInfo.InvariantCulture, DateTimeStyles.None) with
    | true, dateValue ->
        printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
    | _ ->
        printfn $"'{dateString}' is not in an acceptable format."

    match DateTime.TryParseExact(dateString, "o", CultureInfo.InvariantCulture, DateTimeStyles.RoundtripKind) with
    | true, dateValue ->
        printfn $"Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
    | _ ->
        printfn $"'{dateString}' is not in an acceptable format."

    0

    // The example displays the following output:
    //    ' 5/01/2009 8:30 AM' is not in an acceptable format.
    //    Converted ' 5/01/2009 8:30 AM' to 5/1/2009 8:30:00 AM (Unspecified).
    //    Converted '5/01/2009 09:00' to 5/1/2009 9:00:00 AM (Unspecified).
    //    '5/01/2009 09:00' is not in an acceptable format.
    //    Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 11:30:42 AM (Local).
    //    Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 6:30:42 PM (Utc).
    //    Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 9:11:20 AM (Local).
    //    Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 4:11:20 PM (Utc).
Imports System.Globalization

Public Module Example
   Public Sub Main()
      Dim enUS As New CultureInfo("en-US") 
      Dim dateString As String
      Dim dateValue As Date
      
      ' Parse date with no style flags.
      dateString = " 5/01/2009 8:30 AM"
      If Date.TryParseExact(dateString, "g", enUS, _
                            DateTimeStyles.None, dateValue) Then
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End If
      ' Allow a leading space in the date string.
      If Date.TryParseExact(dateString, "g", enUS, _
                            DateTimeStyles.AllowLeadingWhite, dateValue) Then
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End If
      
      ' Use custom formats with M and MM.
      dateString = "5/01/2009 09:00"
      If Date.TryParseExact(dateString, "M/dd/yyyy hh:mm", enUS, _
                            DateTimeStyles.None, dateValue) Then
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End If
      ' Allow a leading space in the date string.
      If Date.TryParseExact(dateString, "MM/dd/yyyy hh:mm", enUS, _
                            DateTimeStyles.None, dateValue) Then
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End If

      ' Parse a string with time zone information.
      dateString = "05/01/2009 01:30:42 PM -05:00" 
      If Date.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, _
                            DateTimeStyles.None, dateValue) Then
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End If
      ' Allow a leading space in the date string.
      If Date.TryParseExact(dateString, "MM/dd/yyyy hh:mm:ss tt zzz", enUS, _
                            DateTimeStyles.AdjustToUniversal, dateValue) Then
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End If
           
      ' Parse a string representing UTC.
      dateString = "2008-06-11T16:11:20.0904778Z"
      If Date.TryParseExact(dateString, "o", CultureInfo.InvariantCulture, _
                                     DateTimeStyles.None, dateValue) Then
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End If
      
      If Date.TryParseExact(dateString, "o", CultureInfo.InvariantCulture, _
                            DateTimeStyles.RoundtripKind, dateValue) Then
         Console.WriteLine("Converted '{0}' to {1} ({2}).", dateString, dateValue, _
                           dateValue.Kind)
      Else
         Console.WriteLine("'{0}' is not in an acceptable format.", dateString)
      End If
   End Sub
End Module
' The example displays the following output:
'    ' 5/01/2009 8:30 AM' is not in an acceptable format.
'    Converted ' 5/01/2009 8:30 AM' to 5/1/2009 8:30:00 AM (Unspecified).
'    Converted '5/01/2009 09:00' to 5/1/2009 9:00:00 AM (Unspecified).
'    '5/01/2009 09:00' is not in an acceptable format.
'    Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 11:30:42 AM (Local).
'    Converted '05/01/2009 01:30:42 PM -05:00' to 5/1/2009 6:30:42 PM (Utc).
'    Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 9:11:20 AM (Local).
'    Converted '2008-06-11T16:11:20.0904778Z' to 6/11/2008 4:11:20 PM (Utc).

Observações

O DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) método analisa a representação em cadeia de uma data, que deve estar no formato definido pelo format parâmetro. É semelhante ao DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles) método, exceto que o TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) método não lança uma exceção se a conversão falhar.

O s parâmetro contém a data e hora para a análise e deve estar num formato definido pelo format parâmetro. Se os elementos de data, hora e fuso horário estiverem presentes em s, também devem aparecer na ordem especificada por format. Se format definir uma data sem elemento de tempo e a operação de análise for bem-sucedida, o valor resultante DateTime tem uma hora de meia-noite (00:00:00). Se format definir uma hora sem elemento de data e a operação de análise for bem-sucedida, o valor resultante DateTime por defeito tem uma data de DateTime.Now.Date, ou tem uma data de DateTime.MinValue.Date se styles inclui a DateTimeStyles.NoCurrentDateDefault bandeira. O style parâmetro determina se pode s conter caracteres de espaço em branco à frente, interior ou final.

Se s não contiver informação de fuso horário, a Kind propriedade do objeto devolvido DateTime é DateTimeKind.Unspecified. Este comportamento pode ser alterado usando o DateTimeStyles.AssumeLocal flag, que devolve um DateTime valor cuja Kind propriedade é DateTimeKind.Local, ou usando os DateTimeStyles.AssumeUniversal flags e DateTimeStyles.AdjustToUniversal , que devolve um DateTime valor cuja Kind propriedade é DateTimeKind.Utc. Se s contiver informação de fuso horário, a hora é convertida para hora local, se necessário, e a Kind propriedade do objeto devolvido DateTime é definida para DateTimeKind.Local. Este comportamento pode ser alterado usando a DateTimeStyles.RoundtripKind flag para não converter o Tempo Universal Coordenado (UTC) para uma hora local e definir a Kind propriedade para DateTimeKind.Utc.

O format parâmetro contém um padrão que corresponde ao formato esperado do s parâmetro. O padrão no format parâmetro consiste em um ou mais especificadores de formato personalizados da tabela de Formas de Data e Hora Personalizadas , ou num único especificador de formato padrão, que identifica um padrão pré-definido, a partir da tabela de Cadeias de Formato de Data e Hora Padrão .

Se não usar separadores de data ou hora num padrão de formato personalizado, use a cultura invariante para o provider parâmetro e a forma mais larga de cada especificador de formato personalizado. Por exemplo, se quiseres especificar as horas no padrão, especifica a forma mais ampla, "HH", em vez da forma mais estreita, "H".

Note

Em vez de exigir que s se conformem a um único formato para que a operação de análise sintética tenha sucesso, pode chamar o DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) método e especificar múltiplos formatos permitidos. Isto torna a operação de análise mais provável de sucesso.

Os símbolos e cadeias de data e hora em particular (como os nomes dos dias da semana numa determinada língua) usados em s são definidos pelo provider parâmetro, assim como o formato preciso de s se format for uma cadeia de especificação de formato padrão. O provider parâmetro pode ser qualquer um dos seguintes:

Se provider for null, o CultureInfo objeto que corresponde à cultura atual é usado.

O styles parâmetro inclui um ou mais membros da DateTimeStyles enumeração que determinam se e onde pode aparecer s espaço em branco não definido por format por e que controlam o comportamento preciso da operação de análise sintática. A tabela seguinte descreve como cada membro da DateTimeStyles enumeração afeta o funcionamento do TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) método.

Membro DateTimeStyles Description
AdjustToUniversal Analisa s e, se necessário, converte-o para UTC. Se s incluir um deslocamento de fuso horário, ou se s não contiver informações de fuso horário, mas styles incluir o DateTimeStyles.AssumeLocal sinalizador, o método analisará a cadeia de caracteres, chamará ToUniversalTime para converter o valor retornado DateTime em UTC e definirá a Kind propriedade como DateTimeKind.Utc. Se s indicar que ele representa UTC, ou se s não contém informações de fuso horário, mas styles inclui o DateTimeStyles.AssumeUniversal sinalizador, o método analisa a cadeia de caracteres, não executa nenhuma conversão de fuso horário no valor retornado DateTime e define a Kind propriedade como DateTimeKind.Utc. Em todos os outros casos, a bandeira não tem efeito.
AllowInnerWhite Especifica que um espaço em branco não definido por format pode aparecer entre qualquer elemento individual de data ou hora.
AllowLeadingWhite Especifica que o espaço em branco não definido por format pode aparecer no início de s.
AllowTrailingWhite Especifica que o espaço em branco não definido por format pode aparecer no final de s.
AllowWhiteSpaces Especifica que s pode conter espaços brancos à frente, interior e final não definidos por format.
AssumeLocal Especifica que, se s não houver informações de fuso horário, presume-se que elas representem uma hora local. A menos que o DateTimeStyles.AdjustToUniversal sinalizador esteja presente, a Kind propriedade do valor retornado DateTime é definida como DateTimeKind.Local.
AssumeUniversal Especifica que, se s não contiver informações de fuso horário, presume-se que representa UTC. A menos que o DateTimeStyles.AdjustToUniversal sinalizador esteja presente, o método converte o valor retornado DateTime de UTC para a hora local e define sua Kind propriedade como DateTimeKind.Local.
NoCurrentDateDefault Se s contiver tempo sem informação de data, a data do valor de retorno é definida para DateTime.MinValue.Date.
None O s parâmetro é analisado usando valores padrão. Não é permitido nenhum espaço em branco além do presente em format . Se s não houver componente de data, a data do valor devolvido DateTime é definida como 1/1/0001. Se s não contiver informação de fuso horário, a Kind propriedade do objeto devolvido DateTime é definida para DateTimeKind.Unspecified. Se a informação do fuso horário estiver presente em s, a hora é convertida para hora local e a Kind propriedade do objeto devolvido DateTime é definida para DateTimeKind.Local.
RoundtripKind Para cadeias que contêm informação de fuso horário, tenta impedir a conversão para um DateTime valor com a propriedade Kind definida em DateTimeKind.Local. Esta bandeira impede principalmente a conversão dos horários UTC para os horários locais.

Notas para Chamadores

No .NET Framework 4, o método TryParseExact retorna false se a cadeia a analisar contiver um componente de horas e um designador AM/PM que não estejam em concordância. No .NET Framework 3.5 e versões anteriores, o designador AM/PM é ignorado.

Ver também

Aplica-se a

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

Converte a representação de cadeias especificada de uma data e hora para o seu DateTime equivalente usando o array especificado de formatos, informação de formato específica de cultura e estilo. O formato da representação da cadeia deve corresponder exatamente a um dos formatos especificados. O método devolve um valor que indica se a conversão foi bem-sucedida.

public:
 static bool TryParseExact(System::String ^ s, cli::array <System::String ^> ^ formats, IFormatProvider ^ provider, System::Globalization::DateTimeStyles style, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParseExact(string s, string[] formats, IFormatProvider provider, System.Globalization.DateTimeStyles style, out DateTime result);
static member TryParseExact : string * string[] * IFormatProvider * System.Globalization.DateTimeStyles * DateTime -> bool
Public Shared Function TryParseExact (s As String, formats As String(), provider As IFormatProvider, style As DateTimeStyles, ByRef result As DateTime) As Boolean

Parâmetros

s
String

Uma cadeia que contém uma data e hora para converter.

formats
String[]

Um conjunto de formatos permitidos de s.

provider
IFormatProvider

Um objeto que fornece informação de formato específica da cultura sobre s.

style
DateTimeStyles

Uma combinação bit a bit de valores de enumeração que indica o formato permitido de s. Um valor típico a especificar é None.

result
DateTime

Quando este método retorna, contém o DateTime valor equivalente à data e hora contidas em s, se a conversão foi bem-sucedida, ou DateTime.MinValue se a conversão falhou. A conversão falha se ou for , ou um elemento de formats for uma cadeia vazia, ou o formato de s não for exatamente conforme especificado por pelo menos um dos padrões de formato em formats. snullformatss Este parâmetro é passado sem inicializar.

Devoluções

true se o s parâmetro foi convertido com sucesso; caso contrário, false.

Exceções

O comprimento de um elemento em formats é 1, e não é um dos caracteres especificadores de formato definidos para DateTimeFormatInfo.

style não é um valor válido DateTimeStyles .

-ou-

style contém uma combinação inválida de DateTimeStyles valores (por exemplo, tanto AssumeLocal como AssumeUniversal).

Exemplos

O exemplo seguinte utiliza o DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) método para garantir que uma cadeia em vários formatos possíveis pode ser analisada com sucesso.

using System;
using System.Globalization;

public class Example
{
   public static void Main()
   {
      string[] formats= {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt",
                         "MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss",
                         "M/d/yyyy hh:mm tt", "M/d/yyyy hh tt",
                         "M/d/yyyy h:mm", "M/d/yyyy h:mm",
                         "MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm"};
      string[] dateStrings = {"5/1/2009 6:32 PM", "05/01/2009 6:32:05 PM",
                              "5/1/2009 6:32:00", "05/01/2009 06:32",
                              "05/01/2009 06:32:00 PM", "05/01/2009 06:32:00"};
      DateTime dateValue;

      foreach (string dateString in dateStrings)
      {
         if (DateTime.TryParseExact(dateString, formats,
                                    new CultureInfo("en-US"),
                                    DateTimeStyles.None,
                                    out dateValue))
            Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue);
         else
            Console.WriteLine("Unable to convert '{0}' to a date.", dateString);
      }
   }
}
// The example displays the following output:
//       Converted '5/1/2009 6:32 PM' to 5/1/2009 6:32:00 PM.
//       Converted '05/01/2009 6:32:05 PM' to 5/1/2009 6:32:05 PM.
//       Converted '5/1/2009 6:32:00' to 5/1/2009 6:32:00 AM.
//       Converted '05/01/2009 06:32' to 5/1/2009 6:32:00 AM.
//       Converted '05/01/2009 06:32:00 PM' to 5/1/2009 6:32:00 PM.
//       Converted '05/01/2009 06:32:00' to 5/1/2009 6:32:00 AM.
open System
open System.Globalization

let formats= 
    [| "M/d/yyyy h:mm:ss tt"; "M/d/yyyy h:mm tt"
       "MM/dd/yyyy hh:mm:ss"; "M/d/yyyy h:mm:ss"
       "M/d/yyyy hh:mm tt"; "M/d/yyyy hh tt"
       "M/d/yyyy h:mm"; "M/d/yyyy h:mm"
       "MM/dd/yyyy hh:mm"; "M/dd/yyyy hh:mm" |]

let dateStrings = 
    [ "5/1/2009 6:32 PM"; "05/01/2009 6:32:05 PM"
      "5/1/2009 6:32:00"; "05/01/2009 06:32"
      "05/01/2009 06:32:00 PM"; "05/01/2009 06:32:00" ]

for dateString in dateStrings do
    match DateTime.TryParseExact(dateString, formats, CultureInfo "en-US", DateTimeStyles.None) with
    | true, dateValue ->
        printfn $"Converted '{dateString}' to {dateValue}."
    | _ ->
        printfn $"Unable to convert '{dateString}' to a date."


// The example displays the following output:
//       Converted '5/1/2009 6:32 PM' to 5/1/2009 6:32:00 PM.
//       Converted '05/01/2009 6:32:05 PM' to 5/1/2009 6:32:05 PM.
//       Converted '5/1/2009 6:32:00' to 5/1/2009 6:32:00 AM.
//       Converted '05/01/2009 06:32' to 5/1/2009 6:32:00 AM.
//       Converted '05/01/2009 06:32:00 PM' to 5/1/2009 6:32:00 PM.
//       Converted '05/01/2009 06:32:00' to 5/1/2009 6:32:00 AM.
Imports System.Globalization

Public Module Example
   Public Sub Main()
      Dim formats() As String = {"M/d/yyyy h:mm:ss tt", "M/d/yyyy h:mm tt", _
                                 "MM/dd/yyyy hh:mm:ss", "M/d/yyyy h:mm:ss", _
                                 "M/d/yyyy hh:mm tt", "M/d/yyyy hh tt", _
                                 "M/d/yyyy h:mm", "M/d/yyyy h:mm", _
                                 "MM/dd/yyyy hh:mm", "M/dd/yyyy hh:mm"}
      Dim dateStrings() As String = {"5/1/2009 6:32 PM", "05/01/2009 6:32:05 PM", _
                                     "5/1/2009 6:32:00", "05/01/2009 06:32", _
                                     "05/01/2009 06:32:00 PM", "05/01/2009 06:32:00"} 

      Dim dateValue As DateTime
      
      For Each dateString As String In dateStrings
         If Date.TryParseExact(dateString, formats, _
                               New CultureInfo("en-US"), _
                               DateTimeStyles.None, _
                               dateValue) Then
            Console.WriteLine("Converted '{0}' to {1}.", dateString, dateValue)
         Else
            Console.WriteLine("Unable to convert '{0}' to a date.", dateString)
         End If                                               
      Next
   End Sub   
End Module
' The example displays the following output:
'       Converted '5/1/2009 6:32 PM' to 5/1/2009 6:32:00 PM.
'       Converted '05/01/2009 6:32:05 PM' to 5/1/2009 6:32:05 PM.
'       Converted '5/1/2009 6:32:00' to 5/1/2009 6:32:00 AM.
'       Converted '05/01/2009 06:32' to 5/1/2009 6:32:00 AM.
'       Converted '05/01/2009 06:32:00 PM' to 5/1/2009 6:32:00 PM.
'       Converted '05/01/2009 06:32:00' to 5/1/2009 6:32:00 AM.

Observações

O DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) método analisa a representação da string de uma data que corresponde a qualquer um dos padrões atribuídos ao formats parâmetro. É como o DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles) método, exceto que o TryParseExact método não lança uma exceção se a conversão falhar.

O s parâmetro contém a data e a hora para analisar. Se o s parâmetro contiver apenas uma hora e nenhuma data, a data atual é usada, a menos que o style parâmetro inclua a DateTimeStyles.NoCurrentDateDefault bandeira, caso em que é usada a data padrão (DateTime.Date.MinValue). Se o s parâmetro contiver apenas uma data e nenhuma hora, usa-se a meia-noite (00:00:00). O style parâmetro também determina se o s parâmetro pode conter caracteres de espaço em branco à frente, interior ou final diferentes daqueles permitidos por uma das cadeias de formato em formats.

Se s não contiver informação de fuso horário, a Kind propriedade do objeto devolvido DateTime é DateTimeKind.Unspecified. Este comportamento pode ser alterado usando o DateTimeStyles.AssumeLocal flag, que devolve um DateTime valor cuja Kind propriedade é DateTimeKind.Local, ou usando os DateTimeStyles.AssumeUniversal flags e DateTimeStyles.AdjustToUniversal , que devolve um DateTime valor cuja Kind propriedade é DateTimeKind.Utc. Se s contiver informação de fuso horário, a hora é convertida para hora local, se necessário, e a Kind propriedade do objeto devolvido DateTime é definida para DateTimeKind.Local. Este comportamento pode ser alterado usando a DateTimeStyles.RoundtripKind flag para não converter o Tempo Universal Coordenado (UTC) para uma hora local e definir a Kind propriedade para DateTimeKind.Utc.

O formats parâmetro contém um array de padrões, um dos quais s deve corresponder exatamente para que a operação de análise sintética tenha sucesso. Os padrões no formats parâmetro consistem num ou mais especificadores de formato personalizados da tabela de Cadeias de Formato de Data e Hora Personalizadas , ou num único especificador de formato padrão, que identifica um padrão pré-definido, a partir da tabela de Cadeias de Formato de Data e Hora Padrão .

Se não usar separadores de data ou hora num padrão de formato personalizado, use a cultura invariante para o provider parâmetro e a forma mais larga de cada especificador de formato personalizado. Por exemplo, se quiseres especificar as horas no padrão, especifica a forma mais ampla, "HH", em vez da forma mais estreita, "H".

Os símbolos e cadeias de data e hora em particular (como os nomes dos dias da semana numa determinada língua) usados em s são definidos pelo provider parâmetro, assim como o formato preciso de s se format for uma cadeia de especificação de formato padrão. O provider parâmetro pode ser qualquer um dos seguintes:

Se provider for null, o CultureInfo objeto que corresponde à cultura atual é usado.

O styles parâmetro inclui um ou mais membros da DateTimeStyles enumeração que determinam se e onde pode aparecer s espaço em branco não definido por format por e que controlam o comportamento preciso da operação de análise sintática. A tabela seguinte descreve como cada membro da DateTimeStyles enumeração afeta o funcionamento do TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) método.

Membro DateTimeStyles Description
AdjustToUniversal Analisa s e, se necessário, converte-o para UTC. Se s incluir um deslocamento de fuso horário, ou se s não contiver informações de fuso horário, mas styles incluir o DateTimeStyles.AssumeLocal sinalizador, o método analisará a cadeia de caracteres, chamará ToUniversalTime para converter o valor retornado DateTime em UTC e definirá a Kind propriedade como DateTimeKind.Utc. Se s indicar que ele representa UTC, ou se s não contém informações de fuso horário, mas styles inclui o DateTimeStyles.AssumeUniversal sinalizador, o método analisa a cadeia de caracteres, não executa nenhuma conversão de fuso horário no valor retornado DateTime e define a Kind propriedade como DateTimeKind.Utc. Em todos os outros casos, a bandeira não tem efeito.
AllowInnerWhite Especifica que um espaço em branco não definido por format pode aparecer entre qualquer elemento individual de data ou hora.
AllowLeadingWhite Especifica que o espaço em branco não definido por format pode aparecer no início de s.
AllowTrailingWhite Especifica que o espaço em branco não definido por format pode aparecer no final de s.
AllowWhiteSpaces Especifica que s pode conter espaços brancos à frente, interior e final não definidos por format.
AssumeLocal Especifica que, se s não houver informações de fuso horário, presume-se que elas representem uma hora local. A menos que o DateTimeStyles.AdjustToUniversal sinalizador esteja presente, a Kind propriedade do valor retornado DateTime é definida como DateTimeKind.Local.
AssumeUniversal Especifica que, se s não contiver informações de fuso horário, presume-se que representa UTC. A menos que o DateTimeStyles.AdjustToUniversal sinalizador esteja presente, o método converte o valor retornado DateTime de UTC para a hora local e define sua Kind propriedade como DateTimeKind.Local.
NoCurrentDateDefault Se s contiver tempo sem informação de data, a data do valor de retorno é definida para DateTime.MinValue.Date.
None O s parâmetro é analisado usando valores padrão. Não é permitido nenhum espaço em branco além do presente em format . Se s não houver componente de data, a data do valor devolvido DateTime é definida como 1/1/0001. Se s não contiver informação de fuso horário, a Kind propriedade do objeto devolvido DateTime é definida para DateTimeKind.Unspecified. Se a informação do fuso horário estiver presente em s, a hora é convertida para hora local e a Kind propriedade do objeto devolvido DateTime é definida para DateTimeKind.Local.
RoundtripKind Para cadeias que contêm informação de fuso horário, tenta impedir a conversão para um DateTime valor com a propriedade Kind definida em DateTimeKind.Local. Esta bandeira impede principalmente a conversão dos horários UTC para os horários locais.

Notas para Chamadores

No .NET Framework 4, o método TryParseExact retorna false se a cadeia a analisar contiver um componente de horas e um designador AM/PM que não estejam em concordância. No .NET Framework 3.5 e versões anteriores, o designador AM/PM é ignorado.

Ver também

Aplica-se a