Compartir a través de


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 hay una fecha, pero su componente de año consta de solo dos dígitos, se convierte a un año en el calendario actual del parámetro provider según el valor de la propiedad Calendar.TwoDigitYearMax. Se omiten los caracteres de espacio en blanco iniciales, internos o finales de s . La fecha y hora pueden estar rodeadas por un par de caracteres de signo de número ('#', U+0023) y pueden estar seguidas por uno o más caracteres nulos (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 interpreta 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 Analiza s 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 marca DateTimeStyles.AssumeLocal, el método analiza la cadena, llama a ToUniversalTime para convertir el valor devuelto DateTime a UTC y establece la propiedad Kind en DateTimeKind.Utc. Si s indica que representa UTC o si s no contiene información de zona horaria, pero styles incluye la marca DateTimeStyles.AssumeUniversal, el método analiza esta cadena, no realiza ninguna conversión de zona horaria en el valor devuelto DateTime y establece la propiedad Kind en DateTimeKind.Utc. 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 propiedad Kind del valor devuelto DateTime se establece en DateTimeKind.Local.
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 zona horaria o desplazamiento de zona horaria, el método DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) realiza la 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 método TryParseExact requiere que designe explícitamente uno o varios patrones de análisis exactos que probablemente tengan éxito.

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