DateTime.TryParseExact Método
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Converte a representação de cadeia de caracteres especificada de uma data e hora em seu DateTime equivalente. O formato da representação de cadeia de caracteres deve corresponder exatamente a um formato especificado. O método retorna um valor que indica se a conversão foi bem-sucedida.
Sobrecargas
TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime) |
Converte a representação de intervalo especificada de uma data e hora em seu DateTime equivalente usando o formato especificado, as informações de formato específicas da cultura e o estilo. O formato da representação de cadeia de caracteres deve corresponder exatamente ao formato especificado. O método retorna 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 em seu DateTime equivalente e retorna um valor que indica se a conversão foi bem-sucedida. |
TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) |
Converte a representação de cadeia de caracteres especificada de uma data e hora em seu DateTime equivalente usando o formato especificado, as informações de formato específicas da cultura e o estilo. O formato da representação de cadeia de caracteres deve corresponder exatamente ao formato especificado. O método retorna um valor que indica se a conversão foi bem-sucedida. |
TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) |
Converte a representação de cadeia de caracteres especificada de uma data e hora em seu DateTime equivalente usando a matriz especificada de formatos, informações de formato específicas da cultura e estilo. O formato da representação de cadeia de caracteres deve corresponder exatamente a pelo menos um dos formatos especificados. O método retorna um valor que indica se a conversão foi bem-sucedida. |
Comentários
Importante
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 Tratando 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 preparação para a alteração da era, consulte Preparar seu aplicativo para a alteração da era japonesa. Para obter recursos no .NET que dão suporte a calendários com várias eras e práticas recomendadas ao trabalhar com calendários que dão suporte a várias eras, consulte Trabalhando com eras.
TryParseExact(ReadOnlySpan<Char>, ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime)
- Origem:
- DateTime.cs
- Origem:
- DateTime.cs
- Origem:
- DateTime.cs
Converte a representação de intervalo especificada de uma data e hora em seu DateTime equivalente usando o formato especificado, as informações de formato específicas da cultura e o estilo. O formato da representação de cadeia de caracteres deve corresponder exatamente ao formato especificado. O método retorna 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);
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 intervalo que contém os caracteres que representam uma data e hora a serem convertidos.
- format
- ReadOnlySpan<Char>
O formato necessário de s
.
- provider
- IFormatProvider
Um objeto que fornece informações de formatação específicas da 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 esse método é retornado, contém o valor DateTime equivalente à data e hora contidas no s
, se a conversão foi bem-sucedida ou DateTime.MinValue se a conversão falhou. A conversão falhará se o parâmetro s
ou format
for null
, for uma cadeia de caracteres vazia ou não contiver uma data e hora que correspondam ao padrão especificado em format
. Esse parâmetro é passado sem inicialização.
Retornos
true
se s
foi convertido com êxito; caso contrário, false
.
Aplica-se a
TryParseExact(ReadOnlySpan<Char>, String[], IFormatProvider, DateTimeStyles, DateTime)
- Origem:
- DateTime.cs
- Origem:
- DateTime.cs
- Origem:
- DateTime.cs
Converte o intervalo de caracteres especificado de uma data e hora em seu DateTime equivalente e retorna 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);
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 de caracteres a ser analisada.
- formats
- String[]
Uma matriz de formatos permitidos de s
.
- provider
- IFormatProvider
Um objeto que fornece informações de formatação específicas da 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 ser especificado é None.
- result
- DateTime
Quando esse método é retornado, contém o valor DateTime equivalente à data e hora contidas no s
, se a conversão foi bem-sucedida ou DateTime.MinValue se a conversão falhou. A conversão falhará se o parâmetro s
for null
, for Emptyou não contiver uma representação de cadeia de caracteres válida de uma data e hora. Esse parâmetro é passado sem inicialização.
Retornos
true
se o parâmetro s
tiver sido convertido com êxito; caso contrário, false
.
Aplica-se a
TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime)
- Origem:
- DateTime.cs
- Origem:
- DateTime.cs
- Origem:
- DateTime.cs
Converte a representação de cadeia de caracteres especificada de uma data e hora em seu DateTime equivalente usando o formato especificado, as informações de formato específicas da cultura e o estilo. O formato da representação de cadeia de caracteres deve corresponder exatamente ao formato especificado. O método retorna 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);
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 de caracteres que contém uma data e hora a serem convertidas.
- format
- String
O formato necessário de s
.
- provider
- IFormatProvider
Um objeto que fornece informações de formatação específicas da 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 esse método é retornado, contém o valor DateTime equivalente à data e hora contidas no s
, se a conversão foi bem-sucedida ou DateTime.MinValue se a conversão falhou. A conversão falhará se o parâmetro s
ou format
for null
, for uma cadeia de caracteres vazia ou não contiver uma data e hora que correspondam ao padrão especificado em format
. Esse parâmetro é passado sem inicialização.
Retornos
true
se s
foi convertido com êxito; caso contrário, false
.
Exceções
style
não é um valor de DateTimeStyles válido.
-ou-
style
contém uma combinação inválida de valores DateTimeStyles (por exemplo, AssumeLocal e AssumeUniversal).
Exemplos
O exemplo a seguir demonstra o método DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime). Observe que a cadeia de caracteres " 5/01/2009 8:30 AM" não pode ser analisada com êxito quando o parâmetro styles
é igual a DateTimeStyles.None porque espaços à esquerda não são permitidos por format
. Além disso, a cadeia de caracteres "01/5/2009 09:00" não pode ser analisada com êxito com um format
de "MM/dd/yyyyhh:mm" porque a cadeia de caracteres de data não precede o número do mês com um zero à esquerda, como format
requer.
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).
Comentários
O método DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) analisa a representação de cadeia de caracteres de uma data, que deve estar no formato definido pelo parâmetro format
. É semelhante ao método DateTime.ParseExact(String, String, IFormatProvider, DateTimeStyles), exceto que o método TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) não gera uma exceção se a conversão falhar.
O parâmetro s
contém a data e a hora a serem analisadas e deve estar em um formato definido pelo parâmetro format
. Se os elementos de data, hora e fuso horário estiverem presentes no s
, eles também deverão aparecer na ordem especificada por format
. Se format
definir uma data sem elemento de hora e a operação de análise for bem-sucedida, o valor DateTime resultante terá 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 DateTime resultante por padrão terá uma data de DateTime.Now.Date
ou terá uma data de DateTime.MinValue.Date
se styles
incluir o sinalizador DateTimeStyles.NoCurrentDateDefault. O parâmetro style
determina se o parâmetro s
pode conter caracteres de espaço em branco à esquerda, internos ou à direita.
Se s
não contiver informações de fuso horário, a propriedade Kind do objeto DateTime retornado será DateTimeKind.Unspecified. Esse comportamento pode ser alterado usando o sinalizador DateTimeStyles.AssumeLocal, que retorna um valor DateTime cuja propriedade Kind é DateTimeKind.Localou usando os sinalizadores DateTimeStyles.AssumeUniversal e DateTimeStyles.AdjustToUniversal, que retorna um valor DateTime cuja propriedade Kind é DateTimeKind.Utc. Se s contiver informações de fuso horário, a hora será convertida em hora local, se necessário, e a propriedade Kind do objeto DateTime retornado será definida como DateTimeKind.Local. Esse comportamento pode ser alterado usando o sinalizador DateTimeStyles.RoundtripKind para não converter UTC (Tempo Universal Coordenado) em uma hora local e definir a propriedade Kind como DateTimeKind.Utc.
O parâmetro format
contém um padrão que corresponde ao formato esperado do parâmetro s
. O padrão no parâmetro format
consiste em um ou mais especificadores de formato personalizado da tabela cadeias de caracteres de formato de data e hora personalizadas ou um único especificador de formato padrão, que identifica um padrão predefinido, da tabela Cadeias de Caracteres de Formato de Data e Hora Padrão.
Se você não usar separadores de data ou hora em um padrão de formato personalizado, use a cultura invariável para o parâmetro provider
e a forma mais ampla de cada especificador de formato personalizado. Por exemplo, se você quiser especificar horas no padrão, especifique o formato mais amplo, "HH", em vez do formato mais estreito, "H".
Nota
Em vez de exigir que s
esteja em conformidade com um único formato para que a operação de análise tenha êxito, você pode chamar o método DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) e especificar vários formatos permitidos. Isso torna a operação de análise mais provável de ter êxito.
Os símbolos e cadeias de caracteres de data e hora específicos (como os nomes dos dias da semana em um idioma específico) usados em s
são definidos pelo parâmetro provider
, assim como o formato preciso de s
se format
for uma cadeia de caracteres do especificador de formato padrão. O parâmetro provider
pode ser qualquer um dos seguintes:
Um objeto CultureInfo que representa a cultura usada para interpretar
s
. O objeto DateTimeFormatInfo retornado por sua propriedade DateTimeFormat define os símbolos e a formatação ems
.Um objeto DateTimeFormatInfo que define o formato dos dados de data e hora.
Uma implementação de IFormatProvider personalizada cujo método GetFormat retorna o objeto CultureInfo ou o objeto DateTimeFormatInfo que fornece informações de formatação.
Se provider
for null
, o objeto CultureInfo que corresponde à cultura atual será usado.
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. A tabela a seguir descreve como cada membro da enumeração DateTimeStyles afeta a operação do método TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime).
Membro DateTimeStyles | Descrição |
---|---|
AdjustToUniversal | Analisa s e, se necessário, converte-o em 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 sinalizador DateTimeStyles.AssumeLocal, o método analisará a cadeia de caracteres, chamará ToUniversalTime para converter o valor de DateTime retornado em UTC e definirá a propriedade Kind como DateTimeKind.Utc. Se s indicar que ele representa UTC ou se s não contiver informações de fuso horário, mas styles incluir o sinalizador DateTimeStyles.AssumeUniversal, o método analisará a cadeia de caracteres, não executará nenhuma conversão de fuso horário no valor de DateTime retornado e definirá a propriedade Kind como DateTimeKind.Utc. Em todos os outros casos, o sinalizador não tem efeito. |
AllowInnerWhite | Especifica que o espaço em branco não definido por format pode aparecer entre qualquer elemento de data ou hora individual. |
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 podem conter espaços em branco à esquerda, internos e à direita não definidos por format . |
AssumeLocal | Especifica que, se s não tiver nenhuma informação de fuso horário, será considerado representar uma hora local. A menos que o sinalizador DateTimeStyles.AdjustToUniversal esteja presente, a propriedade Kind do valor de DateTime retornado será definida como DateTimeKind.Local. |
AssumeUniversal | Especifica que, se s não tiver nenhuma informação de fuso horário, será considerado representar UTC. A menos que o sinalizador DateTimeStyles.AdjustToUniversal esteja presente, o método converterá o valor de DateTime retornado de UTC para hora local e definirá sua propriedade Kind como DateTimeKind.Local. |
NoCurrentDateDefault | Se s contiver a hora sem informações de data, a data do valor retornado será definida como DateTime.MinValue.Date . |
None | O parâmetro s é analisado usando valores padrão. Nenhum espaço em branco diferente daquele presente em format é permitido. Se s não tiver um componente de data, a data do valor de DateTime retornado será definida como 1/1/0001. Se s não contiver informações de fuso horário, a propriedade Kind do objeto DateTime retornado será definida como DateTimeKind.Unspecified. Se as informações de fuso horário estiverem presentes no s , a hora será convertida em hora local e a propriedade Kind do objeto DateTime retornado será definida como DateTimeKind.Local. |
RoundtripKind | Para cadeias de caracteres que contêm informações de fuso horário, tenta impedir a conversão em um valor de DateTime com sua propriedade Kind definida como DateTimeKind.Local. Esse sinalizador impede principalmente a conversão de horários UTC em horários locais. |
Notas aos Chamadores
No .NET Framework 4, o método TryParseExact retornará false
se a cadeia de caracteres a ser analisada contiver um componente de hora e um designador AM/PM que não estão de acordo. No .NET Framework 3.5 e versões anteriores, o designador AM/PM é ignorado.
Confira também
- ParseExact
- CultureInfo
- DateTimeFormatInfo
- analisar cadeias de caracteres de data e hora no .NET Framework
- cadeias de caracteres de formato de data e hora padrão
- cadeias de caracteres de formato de data e hora personalizadas
Aplica-se a
TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime)
- Origem:
- DateTime.cs
- Origem:
- DateTime.cs
- Origem:
- DateTime.cs
Converte a representação de cadeia de caracteres especificada de uma data e hora em seu DateTime equivalente usando a matriz especificada de formatos, informações de formato específicas da cultura e estilo. O formato da representação de cadeia de caracteres deve corresponder exatamente a pelo menos um dos formatos especificados. O método retorna 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);
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 de caracteres que contém uma data e hora a serem convertidas.
- formats
- String[]
Uma matriz de formatos permitidos de s
.
- provider
- IFormatProvider
Um objeto que fornece informações de formato específicas 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 ser especificado é None.
- result
- DateTime
Quando esse método é retornado, contém o valor DateTime equivalente à data e hora contidas no s
, se a conversão foi bem-sucedida ou DateTime.MinValue se a conversão falhou. A conversão falhará se s
ou formats
for null
, s
ou um elemento de formats
for uma cadeia de caracteres vazia ou o formato de s
não for exatamente como especificado por pelo menos um dos padrões de formato em formats
. Esse parâmetro é passado sem inicialização.
Retornos
true
se o parâmetro s
tiver sido convertido com êxito; caso contrário, false
.
Exceções
style
não é um valor de DateTimeStyles válido.
-ou-
style
contém uma combinação inválida de valores DateTimeStyles (por exemplo, AssumeLocal e AssumeUniversal).
Exemplos
O exemplo a seguir usa o método DateTime.TryParseExact(String, String, IFormatProvider, DateTimeStyles, DateTime) para garantir que uma cadeia de caracteres em vários formatos possíveis possa ser analisada com êxito.
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.
Comentários
O método DateTime.TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime) analisa a representação de cadeia de caracteres de uma data que corresponde a qualquer um dos padrões atribuídos ao parâmetro formats
. É como o método DateTime.ParseExact(String, String[], IFormatProvider, DateTimeStyles), exceto que o método TryParseExact não gera uma exceção se a conversão falhar.
O parâmetro s
contém a data e a hora a serem analisadas. Se o parâmetro s
contiver apenas uma hora e nenhuma data, a data atual será usada, a menos que o parâmetro style
inclua o sinalizador DateTimeStyles.NoCurrentDateDefault, nesse caso, a data padrão (DateTime.Date.MinValue
) é usada. Se o parâmetro s
contiver apenas uma data e nenhuma hora, meia-noite (00:00:00) será usada. O parâmetro style
também determina se o parâmetro s
pode conter caracteres de espaço em branco à esquerda, internos ou à direita diferentes daqueles permitidos por uma das cadeias de caracteres de formato em formats
.
Se s
não contiver informações de fuso horário, a propriedade Kind do objeto DateTime retornado será DateTimeKind.Unspecified. Esse comportamento pode ser alterado usando o sinalizador DateTimeStyles.AssumeLocal, que retorna um valor DateTime cuja propriedade Kind é DateTimeKind.Localou usando os sinalizadores DateTimeStyles.AssumeUniversal e DateTimeStyles.AdjustToUniversal, que retorna um valor DateTime cuja propriedade Kind é DateTimeKind.Utc. Se s contiver informações de fuso horário, a hora será convertida em hora local, se necessário, e a propriedade Kind do objeto DateTime retornado será definida como DateTimeKind.Local. Esse comportamento pode ser alterado usando o sinalizador DateTimeStyles.RoundtripKind para não converter UTC (Tempo Universal Coordenado) em uma hora local e definir a propriedade Kind como DateTimeKind.Utc.
O parâmetro formats
contém uma matriz de padrões, um dos quais s
deve corresponder exatamente se a operação de análise for bem-sucedida. Os padrões no parâmetro formats
consistem em um ou mais especificadores de formato personalizado da tabela cadeias de caracteres de formato de data e hora personalizadas ou um único especificador de formato padrão, que identifica um padrão predefinido, da tabela Cadeias de Caracteres de Formato de Data e Hora Padrão.
Se você não usar separadores de data ou hora em um padrão de formato personalizado, use a cultura invariável para o parâmetro provider
e a forma mais ampla de cada especificador de formato personalizado. Por exemplo, se você quiser especificar horas no padrão, especifique o formato mais amplo, "HH", em vez do formato mais estreito, "H".
Os símbolos e cadeias de caracteres de data e hora específicos (como os nomes dos dias da semana em um idioma específico) usados em s
são definidos pelo parâmetro provider
, assim como o formato preciso de s
se format
for uma cadeia de caracteres do especificador de formato padrão. O parâmetro provider
pode ser qualquer um dos seguintes:
Um objeto CultureInfo que representa a cultura usada para interpretar
s
. O objeto DateTimeFormatInfo retornado por sua propriedade DateTimeFormat define os símbolos e a formatação ems
.Um objeto DateTimeFormatInfo que define o formato dos dados de data e hora.
Uma implementação de IFormatProvider personalizada cujo método GetFormat retorna o objeto CultureInfo ou o objeto DateTimeFormatInfo que fornece informações de formatação.
Se provider
for null
, o objeto CultureInfo que corresponde à cultura atual será usado.
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. A tabela a seguir descreve como cada membro da enumeração DateTimeStyles afeta a operação do método TryParseExact(String, String[], IFormatProvider, DateTimeStyles, DateTime).
Membro DateTimeStyles | Descrição |
---|---|
AdjustToUniversal | Analisa s e, se necessário, converte-o em 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 sinalizador DateTimeStyles.AssumeLocal, o método analisará a cadeia de caracteres, chamará ToUniversalTime para converter o valor de DateTime retornado em UTC e definirá a propriedade Kind como DateTimeKind.Utc. Se s indicar que ele representa UTC ou se s não contiver informações de fuso horário, mas styles incluir o sinalizador DateTimeStyles.AssumeUniversal, o método analisará a cadeia de caracteres, não executará nenhuma conversão de fuso horário no valor de DateTime retornado e definirá a propriedade Kind como DateTimeKind.Utc. Em todos os outros casos, o sinalizador não tem efeito. |
AllowInnerWhite | Especifica que o espaço em branco não definido por format pode aparecer entre qualquer elemento de data ou hora individual. |
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 podem conter espaços em branco à esquerda, internos e à direita não definidos por format . |
AssumeLocal | Especifica que, se s não tiver nenhuma informação de fuso horário, será considerado representar uma hora local. A menos que o sinalizador DateTimeStyles.AdjustToUniversal esteja presente, a propriedade Kind do valor de DateTime retornado será definida como DateTimeKind.Local. |
AssumeUniversal | Especifica que, se s não tiver nenhuma informação de fuso horário, será considerado representar UTC. A menos que o sinalizador DateTimeStyles.AdjustToUniversal esteja presente, o método converterá o valor de DateTime retornado de UTC para hora local e definirá sua propriedade Kind como DateTimeKind.Local. |
NoCurrentDateDefault | Se s contiver a hora sem informações de data, a data do valor retornado será definida como DateTime.MinValue.Date . |
None | O parâmetro s é analisado usando valores padrão. Nenhum espaço em branco diferente daquele presente em format é permitido. Se s não tiver um componente de data, a data do valor de DateTime retornado será definida como 1/1/0001. Se s não contiver informações de fuso horário, a propriedade Kind do objeto DateTime retornado será definida como DateTimeKind.Unspecified. Se as informações de fuso horário estiverem presentes no s , a hora será convertida em hora local e a propriedade Kind do objeto DateTime retornado será definida como DateTimeKind.Local. |
RoundtripKind | Para cadeias de caracteres que contêm informações de fuso horário, tenta impedir a conversão em um valor de DateTime com sua propriedade Kind definida como DateTimeKind.Local. Esse sinalizador impede principalmente a conversão de horários UTC em horários locais. |
Notas aos Chamadores
No .NET Framework 4, o método TryParseExact retornará false
se a cadeia de caracteres a ser analisada contiver um componente de hora e um designador AM/PM que não estão de acordo. No .NET Framework 3.5 e versões anteriores, o designador AM/PM é ignorado.
Confira também
- ParseExact
- CultureInfo
- DateTimeFormatInfo
- analisar cadeias de caracteres de data e hora no .NET Framework
- cadeias de caracteres de formato de data e hora padrão
- cadeias de caracteres de formato de data e hora personalizadas