Método System.DateTime.TryParse

En este artículo se proporcionan comentarios adicionales a la documentación de referencia de esta API.

El DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) método analiza una cadena que puede contener información de fecha, hora y zona horaria. Es similar al DateTime.Parse(String, IFormatProvider, DateTimeStyles) método , salvo que el DateTime.TryParse(String, DateTime) método no produce una excepción si se produce un error en la conversión.

Este método intenta omitir los datos no reconocidos y analizar completamente la cadena de entrada (s). Si s contiene una hora pero ninguna fecha, el método sustituye de forma predeterminada la fecha actual o, si styles incluye la NoCurrentDateDefault marca, sustituye DateTime.Date.MinValue. Si s contiene una fecha pero ninguna hora, se usa la medianoche de 12:00 como hora predeterminada. Si una fecha está presente, pero su componente de año consta de solo dos dígitos, se convierte a un año en el provider calendario actual del parámetro en función del valor de la Calendar.TwoDigitYearMax propiedad . Se omiten los caracteres de espacio en blanco iniciales, internos o finales de s . La fecha y hora pueden estar entre corchetes con un par de caracteres DE SIGNO DE NÚMERO inicial y final ('#', U+0023) y se pueden registrar con uno o más caracteres NULL (U+0000).

Los formatos válidos específicos para los elementos de fecha y hora, así como los nombres y símbolos usados en fechas y horas, se definen mediante el provider parámetro , que puede ser cualquiera de los siguientes:

Si provider es null, se usa la referencia cultural actual.

Si s es la representación de cadena de un día bisiesto en un año bisiesto en el calendario actual, el método analiza s correctamente. Si s es la representación de cadena de un día bisiesto en un año no bisiesto en el calendario actual de provider, se produce un error en la operación de análisis y el método devuelve false.

El styles parámetro define la interpretación precisa de la cadena analizada y cómo la operación de análisis debe controlarla. Puede ser uno o varios miembros de la DateTimeStyles enumeración, como se describe en la tabla siguiente.

Miembro DateTimeStyles Descripción
AdjustToUniversal s Analiza y, si es necesario, lo convierte en UTC. Si s incluye un desplazamiento de zona horaria o si s no contiene información de zona horaria, pero styles incluye la DateTimeStyles.AssumeLocal marca , el método analiza la cadena, llama ToUniversalTime a para convertir el valor devuelto DateTime a UTC y establece la Kind propiedad DateTimeKind.Utcen . Si s indica que representa UTC o si s no contiene información de zona horaria, pero styles incluye la DateTimeStyles.AssumeUniversal marca , el método analiza la cadena, no realiza ninguna conversión de zona horaria en el valor devuelto DateTime y establece la Kind propiedad DateTimeKind.Utcen . En todos los demás casos, la marca no tiene ningún efecto.
AllowInnerWhite Aunque es válido, este valor se omite. El espacio en blanco interno se permite en los elementos de fecha y hora de s.
AllowLeadingWhite Aunque es válido, este valor se omite. El espacio en blanco inicial se permite en los elementos de fecha y hora de s.
AllowTrailingWhite Aunque es válido, este valor se omite. El espacio en blanco final se permite en los elementos de fecha y hora de s.
AllowWhiteSpaces Especifica que s puede contener espacios en blanco iniciales, internos y finales. Este es el comportamiento predeterminado. No se puede invalidar proporcionando un valor de enumeración más restrictivo DateTimeStyles , como DateTimeStyles.None.
AssumeLocal Especifica que si s carece de información de zona horaria, se supone que representa una hora local. A menos que la DateTimeStyles.AdjustToUniversal marca esté presente, la Kind propiedad del valor devuelto DateTime se establece DateTimeKind.Localen .
AssumeUniversal Especifica que si s carece de información de zona horaria, se supone que representa utc. A menos que la DateTimeStyles.AdjustToUniversal marca esté presente, el método convierte el valor devuelto DateTime de UTC a hora local y establece su Kind propiedad en DateTimeKind.Local.
None Aunque es válido, este valor se omite.
RoundtripKind En el caso de las cadenas que contienen información de zona horaria, intenta evitar la conversión de una cadena de fecha y hora en un DateTime valor con su Kind propiedad establecida en DateTimeKind.Local. Normalmente, esta cadena se crea llamando al DateTime.ToString(String) método mediante los especificadores de formato estándar "o", "r" o "u".

Si s no contiene información de zona horaria, el DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) método devuelve un DateTime valor cuya Kind propiedad es DateTimeKind.Unspecified a menos que una styles marca indique lo contrario. Si s incluye información de desplazamiento de zona horaria o zona horaria, el DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) método realiza cualquier conversión de tiempo necesaria y devuelve una de las siguientes opciones:

Este comportamiento se puede invalidar mediante la DateTimeStyles.RoundtripKind marca .

Análisis de referencias culturales personalizadas

Si analiza una cadena de fecha y hora generada para una referencia cultural personalizada, use el TryParseExact método en lugar del TryParse método para mejorar la probabilidad de que la operación de análisis se realice correctamente. Una cadena de fecha y hora de referencia cultural personalizada puede ser complicada y difícil de analizar. El TryParse método intenta analizar una cadena con varios patrones de análisis implícitos, lo que podría producir un error. En cambio, el TryParseExact método requiere que designe explícitamente uno o varios patrones de análisis exactos que probablemente se realicen correctamente.

Para obtener más información sobre las referencias culturales personalizadas, consulte la System.Globalization.CultureAndRegionInfoBuilder clase .