Método System.DateTime.TryParse
Este artigo fornece observações complementares à documentação de referência para essa API.
O DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) método analisa uma cadeia de caracteres que pode conter informações de data, hora e fuso horário. É semelhante ao DateTime.Parse(String, IFormatProvider, DateTimeStyles) método, exceto que o DateTime.TryParse(String, DateTime) método não lança uma exceção se a conversão falhar.
Esse método tenta ignorar dados não reconhecidos e analisar a cadeia de caracteres de entrada (s
) completamente. Se s
contiver uma hora, mas nenhuma data, o método por padrão substituirá a data atual ou, se styles
incluir o NoCurrentDateDefault sinalizador, substituirá DateTime.Date.MinValue
. Se s
contiver uma data, mas nenhuma hora, 12:00 meia-noite é usado como a hora padrão. Se uma data estiver presente, mas seu componente de ano consistir em apenas dois dígitos, ela será convertida em um ano no calendário atual do parâmetro com base no provider
valor da Calendar.TwoDigitYearMax propriedade. Todos os caracteres s
de espaço em branco à esquerda, internos ou à direita são ignorados. A data e a hora podem ser colocadas entre colchetes com um par de caracteres NUMBER SIGN à esquerda e à direita ('#', U+0023), e podem ser rastreadas com um ou mais caracteres NULL (U+0000).
Formatos válidos específicos para elementos de data e hora, bem como os nomes e símbolos usados em datas e horas, são definidos pelo provider
parâmetro, que pode ser qualquer um dos seguintes:
- Um CultureInfo objeto que representa a cultura cuja formatação é usada no
s
parâmetro. O DateTimeFormatInfo objeto retornado pela CultureInfo.DateTimeFormat propriedade define a formatação usada nos
. - Um DateTimeFormatInfo objeto que define a formatação usada no
s
. - Uma implementação personalizada IFormatProvider . Seu IFormatProvider.GetFormat método retorna um DateTimeFormatInfo objeto que define a formatação usada no
s
.
Se provider
for null
, a cultura atual será usada.
Se s
for a representação de cadeia de caracteres de um dia bissexto em um ano bissexto no calendário atual, o método analisará s
com êxito. Se s
for a representação de cadeia de caracteres de um dia bissexto em um ano não bissexto no calendário atual de , a operação de provider
análise falhará e o método retornará false
.
O styles
parâmetro define a interpretação precisa da cadeia de caracteres analisada e como a operação de análise deve manipulá-la. Ele pode ser um ou mais membros da DateTimeStyles enumeração, conforme descrito na tabela a seguir.
Membro DateTimeStyles | Descrição |
---|---|
AdjustToUniversal | Analisa s e, caso necessário, converte-o em 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. 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. Em todos os outros casos, o sinalizador não entra em vigor. |
AllowInnerWhite | Embora válido, esse valor é ignorado. O espaço em branco interno é permitido nos elementos de data e hora do s . |
AllowLeadingWhite | Embora válido, esse valor é ignorado. O espaço em branco à esquerda é permitido nos elementos de data e hora do s . |
AllowTrailingWhite | Embora válido, esse valor é ignorado. O espaço em branco à direita é permitido nos elementos de data e hora do s . |
AllowWhiteSpaces | Especifica que s pode conter espaços em branco à esquerda, internos e à direita. Esse é o comportamento padrão. Ele não pode ser substituído fornecendo um valor de enumeração mais restritivo DateTimeStyles , como DateTimeStyles.None. |
AssumeLocal | Especifica que, caso s não tenha informações de fuso horário, pressupõe-se que ele represente uma hora local. A menos que o sinalizador DateTimeStyles.AdjustToUniversal esteja presente, a propriedade Kind do valor DateTime retornado é definida como DateTimeKind.Local. |
AssumeUniversal | Especifica que, caso s não tenha informações de fuso horário, pressupõe-se que ele represente o 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. |
None | Embora válido, esse valor é ignorado. |
RoundtripKind | Para cadeias de caracteres que contêm informações de fuso horário, tenta impedir a conversão de uma cadeia de caracteres de data e hora em um DateTime valor com sua Kind propriedade definida como DateTimeKind.Local. Normalmente, essa cadeia de caracteres é criada chamando o método usando os especificadores de formato padrão "o DateTime.ToString(String) ", "r" ou "u". |
Se s
não contiver informações de fuso horário, o DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) método retornará um valor cuja Kind propriedade éDateTimeKind.Unspecified, a menos que um DateTime sinalizador indique o styles
contrário. Se s
incluir informações de deslocamento de fuso horário ou fuso horário, o método executará DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) qualquer conversão de tempo necessária e retornará um dos seguintes:
- Um DateTime valor cuja data e hora refletem a hora local e cuja Kind propriedade é DateTimeKind.Local.
- Ou, se
styles
incluir o AdjustToUniversal sinalizador, um DateTime valor cuja data e hora refletem UTC e cuja Kind propriedade é DateTimeKind.Utc.
Esse comportamento pode ser substituído usando o DateTimeStyles.RoundtripKind sinalizador.
Analisar culturas personalizadas
Se você analisar uma cadeia de caracteres de data e hora gerada para uma cultura personalizada, use o TryParseExactTryParse método em vez do método para melhorar a probabilidade de que a operação de análise seja bem-sucedida. Uma cadeia de caracteres de data e hora de cultura personalizada pode ser complicada e difícil de analisar. O TryParse método tenta analisar uma cadeia de caracteres com vários padrões de análise implícitos, todos os quais podem falhar. Por outro lado, o TryParseExact método requer que você designe explicitamente um ou mais padrões de análise exatos que provavelmente terão êxito.
Para obter mais informações sobre culturas personalizadas, consulte a System.Globalization.CultureAndRegionInfoBuilder classe.