Share via


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:

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 provideraná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:

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.