DateTime.TryParse Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Convierte la representación de cadena especificada de una fecha y hora en el objeto DateTime equivalente y devuelve un valor que indica si la conversión se realizó correctamente.
Sobrecargas
| TryParse(String, IFormatProvider, DateTimeStyles, DateTime) |
Convierte la representación de cadena especificada de una fecha y hora en su equivalente DateTime usando la información de formato de la referencia cultural y el estilo de formato especificados, y devuelve un valor que indica si la conversión tuvo éxito. |
| TryParse(String, IFormatProvider, DateTime) |
Intenta analizar una cadena en un valor. |
| TryParse(ReadOnlySpan<Char>, IFormatProvider, DateTime) |
Intenta analizar un intervalo de caracteres en un valor. |
| TryParse(ReadOnlySpan<Char>, DateTime) |
Convierte el intervalo de caracteres especificado de una fecha y hora en su valor DateTime equivalente y devuelve un valor que indica si la conversión se ha realizado correctamente. |
| TryParse(String, DateTime) |
Convierte la representación de cadena especificada de una fecha y hora en el objeto DateTime equivalente y devuelve un valor que indica si la conversión se realizó correctamente. |
| TryParse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime) |
Convierte la representación de intervalo de una fecha y hora en su valor DateTime equivalente mediante la información de formato de la referencia cultural y el estilo de formato especificados, y devuelve un valor que indica si la conversión se ha realizado correctamente. |
Comentarios
Importante
Las eras en los calendarios japoneses se basan en el reino del emperador y, por tanto, se espera que cambien. Por ejemplo, el 1 de mayo de 2019 marcaba el comienzo de la era Reiwa en JapaneseCalendar y JapaneseLunisolarCalendar. Este cambio de era afecta a todas las aplicaciones que usan estos calendarios. Para obtener más información y determinar si las aplicaciones se ven afectadas, vea Control de una nueva era en el calendario japonés en .NET. Para obtener información sobre cómo probar las aplicaciones en sistemas Windows para garantizar su preparación para el cambio de era, consulte Preparación de la aplicación para el cambio de era japonesa. Para ver las características de .NET que admiten calendarios con varias eras y procedimientos recomendados al trabajar con calendarios que admiten varias eras, consulte Trabajar con eras.
TryParse(String, IFormatProvider, DateTimeStyles, DateTime)
Convierte la representación de cadena especificada de una fecha y hora en su equivalente DateTime usando la información de formato de la referencia cultural y el estilo de formato especificados, y devuelve un valor que indica si la conversión tuvo éxito.
public:
static bool TryParse(System::String ^ s, IFormatProvider ^ provider, System::Globalization::DateTimeStyles styles, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParse (string s, IFormatProvider provider, System.Globalization.DateTimeStyles styles, out DateTime result);
public static bool TryParse (string? s, IFormatProvider? provider, System.Globalization.DateTimeStyles styles, out DateTime result);
static member TryParse : string * IFormatProvider * System.Globalization.DateTimeStyles * DateTime -> bool
Public Shared Function TryParse (s As String, provider As IFormatProvider, styles As DateTimeStyles, ByRef result As DateTime) As Boolean
Parámetros
- s
- String
Cadena que contiene una fecha y hora que se van a convertir.
- provider
- IFormatProvider
Objeto que proporciona información de formato específica de la referencia cultural acerca de s.
- styles
- DateTimeStyles
Combinación bit a bit de valores de enumeración que define cómo se va a interpretar la fecha analizada respecto a la zona horaria actual o la fecha actual. Un valor que se especifica de forma habitual es None.
- result
- DateTime
Cuando este método devuelve , contiene el DateTime valor equivalente a la fecha y hora contenida en , si la conversión se realizó correctamente o DateTime.MinValue si se produjo un error en sla conversión. Se produce un error en la conversión cuando el parámetro s es null, es una cadena vacía ("") o no contiene una representación de cadena válida de una fecha y hora. Este parámetro se pasa sin inicializar.
Devoluciones
true si el parámetro s se convierte correctamente; en caso contrario, false.
Excepciones
styles no es un valor DateTimeStyles válido.
O bien
styles contiene una combinación no válida de valores DateTimeStyles (por ejemplo, AssumeLocal y AssumeUniversal).
provider es una referencia cultural neutra y no se puede usar en una operación de análisis.
Ejemplos
El ejemplo siguiente ilustra la DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) método.
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
string dateString;
CultureInfo culture;
DateTimeStyles styles;
DateTime dateResult;
// Parse a date and time with no styles.
dateString = "03/01/2009 10:00 AM";
culture = CultureInfo.CreateSpecificCulture("en-US");
styles = DateTimeStyles.None;
if (DateTime.TryParse(dateString, culture, styles, out dateResult))
Console.WriteLine("{0} converted to {1} {2}.",
dateString, dateResult, dateResult.Kind);
else
Console.WriteLine("Unable to convert {0} to a date and time.",
dateString);
// Parse the same date and time with the AssumeLocal style.
styles = DateTimeStyles.AssumeLocal;
if (DateTime.TryParse(dateString, culture, styles, out dateResult))
Console.WriteLine("{0} converted to {1} {2}.",
dateString, dateResult, dateResult.Kind);
else
Console.WriteLine("Unable to convert {0} to a date and time.", dateString);
// Parse a date and time that is assumed to be local.
// This time is five hours behind UTC. The local system's time zone is
// eight hours behind UTC.
dateString = "2009/03/01T10:00:00-5:00";
styles = DateTimeStyles.AssumeLocal;
if (DateTime.TryParse(dateString, culture, styles, out dateResult))
Console.WriteLine("{0} converted to {1} {2}.",
dateString, dateResult, dateResult.Kind);
else
Console.WriteLine("Unable to convert {0} to a date and time.", dateString);
// Attempt to convert a string in improper ISO 8601 format.
dateString = "03/01/2009T10:00:00-5:00";
if (DateTime.TryParse(dateString, culture, styles, out dateResult))
Console.WriteLine("{0} converted to {1} {2}.",
dateString, dateResult, dateResult.Kind);
else
Console.WriteLine("Unable to convert {0} to a date and time.", dateString);
// Assume a date and time string formatted for the fr-FR culture is the local
// time and convert it to UTC.
dateString = "2008-03-01 10:00";
culture = CultureInfo.CreateSpecificCulture("fr-FR");
styles = DateTimeStyles.AdjustToUniversal | DateTimeStyles.AssumeLocal;
if (DateTime.TryParse(dateString, culture, styles, out dateResult))
Console.WriteLine("{0} converted to {1} {2}.",
dateString, dateResult, dateResult.Kind);
else
Console.WriteLine("Unable to convert {0} to a date and time.", dateString);
}
}
// The example displays the following output to the console:
// 03/01/2009 10:00 AM converted to 3/1/2009 10:00:00 AM Unspecified.
// 03/01/2009 10:00 AM converted to 3/1/2009 10:00:00 AM Local.
// 2009/03/01T10:00:00-5:00 converted to 3/1/2009 7:00:00 AM Local.
// Unable to convert 03/01/2009T10:00:00-5:00 to a date and time.
// 2008-03-01 10:00 converted to 3/1/2008 6:00:00 PM Utc.
open System
open System.Globalization
[<EntryPoint>]
let main _ =
// Parse a date and time with no styles.
let dateString = "03/01/2009 10:00 AM"
let culture = CultureInfo.CreateSpecificCulture "en-US"
let styles = DateTimeStyles.None
match DateTime.TryParse(dateString, culture, styles) with
| true, dateResult ->
printfn $"{dateString} converted to {dateResult} {dateResult.Kind}."
| _ ->
printfn $"Unable to convert {dateString} to a date and time."
// Parse the same date and time with the AssumeLocal style.
let styles = DateTimeStyles.AssumeLocal
match DateTime.TryParse(dateString, culture, styles) with
| true, dateResult ->
printfn $"{dateString} converted to {dateResult} {dateResult.Kind}."
| _ ->
printfn $"Unable to convert {dateString} to a date and time."
// Parse a date and time that is assumed to be local.
// This time is five hours behind UTC. The local system's time zone is
// eight hours behind UTC.
let dateString = "2009/03/01T10:00:00-5:00"
let styles = DateTimeStyles.AssumeLocal
match DateTime.TryParse(dateString, culture, styles) with
| true, dateResult ->
printfn $"{dateString} converted to {dateResult} {dateResult.Kind}."
| _ ->
printfn $"Unable to convert {dateString} to a date and time."
// Attempt to convert a string in improper ISO 8601 format.
let dateString = "03/01/2009T10:00:00-5:00"
match DateTime.TryParse(dateString, culture, styles) with
| true, dateResult ->
printfn $"{dateString} converted to {dateResult} {dateResult.Kind}."
| _ ->
printfn $"Unable to convert {dateString} to a date and time."
// Assume a date and time string formatted for the fr-FR culture is the local
// time and convert it to UTC.
let dateString = "2008-03-01 10:00"
let culture = CultureInfo.CreateSpecificCulture "fr-FR"
let styles = DateTimeStyles.AdjustToUniversal ||| DateTimeStyles.AssumeLocal
match DateTime.TryParse(dateString, culture, styles) with
| true, dateResult ->
printfn $"{dateString} converted to {dateResult} {dateResult.Kind}."
| _ ->
printfn $"Unable to convert {dateString} to a date and time."
0
// The example displays the following output to the console:
// 03/01/2009 10:00 AM converted to 3/1/2009 10:00:00 AM Unspecified.
// 03/01/2009 10:00 AM converted to 3/1/2009 10:00:00 AM Local.
// 2009/03/01T10:00:00-5:00 converted to 3/1/2009 7:00:00 AM Local.
// Unable to convert 03/01/2009T10:00:00-5:00 to a date and time.
// 2008-03-01 10:00 converted to 3/1/2008 6:00:00 PM Utc.
Imports System.Globalization
Public Module Example
Public Sub Main()
Dim dateString As String
Dim culture As CultureInfo
Dim styles As DateTimeStyles
Dim dateResult As DateTime
' Parse a date and time with no styles.
dateString = "03/01/2009 10:00 AM"
culture = CultureInfo.CreateSpecificCulture("en-US")
styles = DateTimeStyles.None
If DateTime.TryParse(dateString, culture, styles, dateResult) Then
Console.WriteLine("{0} converted to {1} {2}.", _
dateString, dateResult, dateResult.Kind)
Else
Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
End If
' Parse the same date and time with the AssumeLocal style.
styles = DateTimeStyles.AssumeLocal
If DateTime.TryParse(dateString, culture, styles, dateResult)
Console.WriteLine("{0} converted to {1} {2}.", _
dateString, dateResult, dateResult.Kind)
Else
Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
End If
' Parse a date and time that is assumed to be local.
' This time is five hours behind UTC. The local system's time zone is
' eight hours behind UTC.
dateString = "2009/03/01T10:00:00-5:00"
styles = DateTimeStyles.AssumeLocal
If DateTime.TryParse(dateString, culture, styles, dateResult)
Console.WriteLine("{0} converted to {1} {2}.", _
dateString, dateResult, dateResult.Kind)
Else
Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
End If
' Attempt to convert a string in improper ISO 8601 format.
dateString = "03/01/2009T10:00:00-5:00"
If DateTime.TryParse(dateString, culture, styles, dateResult)
Console.WriteLine("{0} converted to {1} {2}.", _
dateString, dateResult, dateResult.Kind)
Else
Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
End If
' Assume a date and time string formatted for the fr-FR culture is the local
' time and convert it to UTC.
dateString = "2008-03-01 10:00"
culture = CultureInfo.CreateSpecificCulture("fr-FR")
styles = DateTimeStyles.AdjustToUniversal Or DateTimeStyles.AssumeLocal
If DateTime.TryParse(dateString, culture, styles, dateResult)
Console.WriteLine("{0} converted to {1} {2}.", _
dateString, dateResult, dateResult.Kind)
Else
Console.WriteLine("Unable to convert {0} to a date and time.", dateString)
End If
End Sub
End Module
' The example displays the following output to the console:
' 03/01/2009 10:00 AM converted to 3/1/2009 10:00:00 AM Unspecified.
' 03/01/2009 10:00 AM converted to 3/1/2009 10:00:00 AM Local.
' 2009/03/01T10:00:00-5:00 converted to 3/1/2009 7:00:00 AM Local.
' Unable to convert 03/01/2009T10:00:00-5:00 to a date and time.
' 2008-03-01 10:00 converted to 3/1/2008 6:00:00 PM Utc.
Comentarios
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 completamente los datos no reconocidos y analizarlos s por completo. 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 pueden ser finales 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:
Objeto CultureInfo que representa la referencia cultural cuyo formato se usa en el
sparámetro . El DateTimeFormatInfo objeto devuelto por la CultureInfo.DateTimeFormat propiedad define el formato usado ens.Objeto DateTimeFormatInfo que define el formato utilizado en
s.Implementación de IFormatProvider personalizada. Su IFormatProvider.GetFormat método devuelve un DateTimeFormatInfo objeto que define el formato usado en
s.
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 debe controlarse la operación de análisis. Puede ser uno o varios miembros de la DateTimeStyles enumeración, como se describe en la tabla siguiente.
| Miembro DateTimeStyles | Descripción |
|---|---|
| AdjustToUniversal | Analiza y, si es s 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 en 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. Se permite el espacio en blanco inicial 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 la hora local y establece su Kind propiedad DateTimeKind.Localen . |
| 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:
Valor DateTime cuya fecha y hora reflejan la hora local y cuya Kind propiedad es DateTimeKind.Local.
O bien, si
stylesincluye la AdjustToUniversal marca , un DateTime valor cuya fecha y hora reflejan UTC y cuya Kind propiedad es DateTimeKind.Utc.
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, vea la System.Globalization.CultureAndRegionInfoBuilder clase .
Notas a los autores de las llamadas
El formato se ve afectado por las propiedades del objeto actual DateTimeFormatInfo , que proporciona el provider parámetro . El TryParse método puede producir un error inesperado y devolver False si las propiedades y TimeSeparator actuales DateSeparator se establecen en el mismo valor.
Consulte también
- Parse
- CultureInfo
- DateTimeFormatInfo
- Analizar cadenas de fecha y hora en .NET Framework
- Cadenas con formato de fecha y hora estándar
- Cadenas con formato de fecha y hora personalizado
Se aplica a
TryParse(String, IFormatProvider, DateTime)
Intenta analizar una cadena en un valor.
public:
static bool TryParse(System::String ^ s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] DateTime % result) = IParsable<DateTime>::TryParse;
public static bool TryParse (string? s, IFormatProvider? provider, out DateTime result);
static member TryParse : string * IFormatProvider * DateTime -> bool
Public Shared Function TryParse (s As String, provider As IFormatProvider, ByRef result As DateTime) As Boolean
Parámetros
- s
- String
- provider
- IFormatProvider
- result
- DateTime
Devoluciones
true es si s se ha analizado correctamente; en caso contrario, falsees .
Se aplica a
TryParse(ReadOnlySpan<Char>, IFormatProvider, DateTime)
Intenta analizar un intervalo de caracteres en un valor.
public:
static bool TryParse(ReadOnlySpan<char> s, IFormatProvider ^ provider, [Runtime::InteropServices::Out] DateTime % result) = ISpanParsable<DateTime>::TryParse;
public static bool TryParse (ReadOnlySpan<char> s, IFormatProvider? provider, out DateTime result);
static member TryParse : ReadOnlySpan<char> * IFormatProvider * DateTime -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), provider As IFormatProvider, ByRef result As DateTime) As Boolean
Parámetros
- s
- ReadOnlySpan<Char>
- provider
- IFormatProvider
- result
- DateTime
Devoluciones
true es si s se ha analizado correctamente; en caso contrario, falsees .
Se aplica a
TryParse(ReadOnlySpan<Char>, DateTime)
Convierte el intervalo de caracteres especificado de una fecha y hora en su valor DateTime equivalente y devuelve un valor que indica si la conversión se ha realizado correctamente.
public:
static bool TryParse(ReadOnlySpan<char> s, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParse (ReadOnlySpan<char> s, out DateTime result);
static member TryParse : ReadOnlySpan<char> * DateTime -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), ByRef result As DateTime) As Boolean
Parámetros
- s
- ReadOnlySpan<Char>
Cadena que contiene una fecha y hora que se van a convertir.
- result
- DateTime
Cuando este método devuelve , contiene el DateTime valor equivalente a la fecha y hora contenida en s, si la conversión se realizó correctamente o DateTime.MinValue si se produjo un error en la conversión. Se produce un error en la conversión cuando el parámetro s es null, es una cadena vacía ("") o no contiene una representación de cadena válida de una fecha y hora. Este parámetro se pasa sin inicializar.
Devoluciones
true si el parámetro s se convierte correctamente; en caso contrario, false.
Se aplica a
TryParse(String, DateTime)
Convierte la representación de cadena especificada de una fecha y hora en el objeto DateTime equivalente y devuelve un valor que indica si la conversión se realizó correctamente.
public:
static bool TryParse(System::String ^ s, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParse (string s, out DateTime result);
public static bool TryParse (string? s, out DateTime result);
static member TryParse : string * DateTime -> bool
Public Shared Function TryParse (s As String, ByRef result As DateTime) As Boolean
Parámetros
- s
- String
Cadena que contiene una fecha y hora que se van a convertir.
- result
- DateTime
Cuando este método devuelve , contiene el DateTime valor equivalente a la fecha y hora contenida en s, si la conversión se realizó correctamente o DateTime.MinValue si se produjo un error en la conversión. Se produce un error en la conversión cuando el parámetro s es null, es una cadena vacía ("") o no contiene una representación de cadena válida de una fecha y hora. Este parámetro se pasa sin inicializar.
Devoluciones
true si el parámetro s se convierte correctamente; en caso contrario, false.
Ejemplos
En el ejemplo siguiente se pasa una serie de cadenas de fecha y hora al DateTime.TryParse(String, DateTime) método .
using namespace System;
using namespace System::Globalization;
void main()
{
array<String^>^ dateStrings = { "05/01/2009 14:57:32.8", "2009-05-01 14:57:32.8",
"2009-05-01T14:57:32.8375298-04:00",
"5/01/2008 14:57:32.80 -07:00",
"1 May 2008 2:57:32.8 PM", "16-05-2009 1:00:32 PM",
"Fri, 15 May 2009 20:10:57 GMT" };
DateTime dateValue;
Console::WriteLine("Attempting to parse strings using {0} culture.",
CultureInfo::CurrentCulture->Name);
for each (String^ dateString in dateStrings)
{
if (DateTime::TryParse(dateString, dateValue))
Console::WriteLine(" Converted '{0}' to {1} ({2}).", dateString,
dateValue, dateValue.Kind);
else
Console::WriteLine(" Unable to parse '{0}'.", dateString);
}
}
// The example displays the following output:
// Attempting to parse strings using en-US culture.
// Converted '05/01/2009 14:57:32.8' to 5/1/2009 2:57:32 PM (Unspecified).
// Converted '2009-05-01 14:57:32.8' to 5/1/2009 2:57:32 PM (Unspecified).
// Converted '2009-05-01T14:57:32.8375298-04:00' to 5/1/2009 11:57:32 AM (Local).
// Converted '5/01/2008 14:57:32.80 -07:00' to 5/1/2008 2:57:32 PM (Local).
// Converted '1 May 2008 2:57:32.8 PM' to 5/1/2008 2:57:32 PM (Unspecified).
// Unable to parse '16-05-2009 1:00:32 PM'.
// Converted 'Fri, 15 May 2009 20:10:57 GMT' to 5/15/2009 1:10:57 PM (Local).
using System;
using System.Globalization;
public class Example
{
public static void Main()
{
string[] dateStrings = {"05/01/2009 14:57:32.8", "2009-05-01 14:57:32.8",
"2009-05-01T14:57:32.8375298-04:00", "5/01/2008",
"5/01/2008 14:57:32.80 -07:00",
"1 May 2008 2:57:32.8 PM", "16-05-2009 1:00:32 PM",
"Fri, 15 May 2009 20:10:57 GMT" };
DateTime dateValue;
Console.WriteLine("Attempting to parse strings using {0} culture.",
CultureInfo.CurrentCulture.Name);
foreach (string dateString in dateStrings)
{
if (DateTime.TryParse(dateString, out dateValue))
Console.WriteLine(" Converted '{0}' to {1} ({2}).", dateString,
dateValue, dateValue.Kind);
else
Console.WriteLine(" Unable to parse '{0}'.", dateString);
}
}
}
// The example displays output like the following:
// Attempting to parse strings using en-US culture.
// Converted '05/01/2009 14:57:32.8' to 5/1/2009 2:57:32 PM (Unspecified).
// Converted '2009-05-01 14:57:32.8' to 5/1/2009 2:57:32 PM (Unspecified).
// Converted '2009-05-01T14:57:32.8375298-04:00' to 5/1/2009 11:57:32 AM (Local).
//
// Converted '5/01/2008' to 5/1/2008 12:00:00 AM (Unspecified).
// Converted '5/01/2008 14:57:32.80 -07:00' to 5/1/2008 2:57:32 PM (Local).
// Converted '1 May 2008 2:57:32.8 PM' to 5/1/2008 2:57:32 PM (Unspecified).
// Unable to parse '16-05-2009 1:00:32 PM'.
// Converted 'Fri, 15 May 2009 20:10:57 GMT' to 5/15/2009 1:10:57 PM (Local).
open System
open System.Globalization
let dateStrings =
[ "05/01/2009 14:57:32.8"; "2009-05-01 14:57:32.8"
"2009-05-01T14:57:32.8375298-04:00"; "5/01/2008"
"5/01/2008 14:57:32.80 -07:00"
"1 May 2008 2:57:32.8 PM"; "16-05-2009 1:00:32 PM"
"Fri, 15 May 2009 20:10:57 GMT" ]
printfn $"Attempting to parse strings using {CultureInfo.CurrentCulture.Name} culture."
for dateString in dateStrings do
match DateTime.TryParse dateString with
| true, dateValue ->
printfn $" Converted '{dateString}' to {dateValue} ({dateValue.Kind})."
| _ ->
printfn $" Unable to parse '{dateString}'."
// The example displays output like the following:
// Attempting to parse strings using en-US culture.
// Converted '05/01/2009 14:57:32.8' to 5/1/2009 2:57:32 PM (Unspecified).
// Converted '2009-05-01 14:57:32.8' to 5/1/2009 2:57:32 PM (Unspecified).
// Converted '2009-05-01T14:57:32.8375298-04:00' to 5/1/2009 11:57:32 AM (Local).
// Converted '5/01/2008' to 5/1/2008 12:00:00 AM (Unspecified).
// Converted '5/01/2008 14:57:32.80 -07:00' to 5/1/2008 2:57:32 PM (Local).
// Converted '1 May 2008 2:57:32.8 PM' to 5/1/2008 2:57:32 PM (Unspecified).
// Unable to parse '16-05-2009 1:00:32 PM'.
// Converted 'Fri, 15 May 2009 20:10:57 GMT' to 5/15/2009 1:10:57 PM (Local).
Imports System.Globalization
Public Module Example
Public Sub Main()
Dim dateStrings() As String = {"05/01/2009 14:57:32.8", "2009-05-01 14:57:32.8",
"2009-05-01T14:57:32.8375298-04:00", "5/01/2008",
"5/01/2008 14:57:32.80 -07:00",
"1 May 2008 2:57:32.8 PM", "16-05-2009 1:00:32 PM",
"Fri, 15 May 2009 20:10:57 GMT"}
Dim dateValue As Date
Console.WriteLine("Attempting to parse strings using {0} culture.", _
CultureInfo.CurrentCulture.Name)
For Each dateString As String In dateStrings
If Date.TryParse(dateString, dateValue) Then
Console.WriteLine(" Converted '{0}' to {1} ({2}).", dateString, _
dateValue, dateValue.Kind)
Else
Console.WriteLine(" Unable to parse '{0}'.", dateString)
End If
Next
End Sub
End Module
' The example displays output like the following:
' Attempting to parse strings using en-US culture.
' Converted '05/01/2009 14:57:32.8' to 5/1/2009 2:57:32 PM (Unspecified).
' Converted '2009-05-01 14:57:32.8' to 5/1/2009 2:57:32 PM (Unspecified).
' Converted '2009-05-01T14:57:32.8375298-04:00' to 5/1/2009 11:57:32 AM (Local).
'
' Converted '5/01/2008' to 5/1/2008 12:00:00 AM (Unspecified).
' Converted '5/01/2008 14:57:32.80 -07:00' to 5/1/2008 2:57:32 PM (Local).
' Converted '1 May 2008 2:57:32.8 PM' to 5/1/2008 2:57:32 PM (Unspecified).
' Unable to parse '16-05-2009 1:00:32 PM'.
' Converted 'Fri, 15 May 2009 20:10:57 GMT' to 5/15/2009 1:10:57 PM (Local).
Comentarios
El DateTime.TryParse(String, DateTime) método es similar al DateTime.Parse(String) método , salvo que el TryParse(String, DateTime) método no produce una excepción si se produce un error en la conversión.
La cadena s se analiza mediante la información de formato en el objeto actual DateTimeFormatInfo , que la referencia cultural actual proporciona implícitamente.
Este método intenta omitir los datos no reconocidos, si es posible, y rellena la información de mes, día y año que faltan con la fecha actual. Si s solo contiene una fecha y ninguna hora, este método supone que la hora es 12:00 medianoche. Si s incluye un componente de fecha con un año de dos dígitos, se convierte en un año del calendario actual de la referencia cultural actual en función del valor de la Calendar.TwoDigitYearMax propiedad . Se omite cualquier carácter de espacio en blanco inicial, interno o final 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 seguir con uno o varios caracteres NULL (U+0000).
Dado que el DateTime.TryParse(String, DateTime) método intenta analizar la representación de cadena de una fecha y hora mediante las reglas de formato de la referencia cultural actual, intentar analizar una cadena determinada en distintas referencias culturales puede producir un error o devolver resultados diferentes. Si se analizará un formato de fecha y hora específico en distintas configuraciones regionales, use el DateTime.TryParse(String, IFormatProvider, DateTimeStyles, DateTime) método o una de las sobrecargas del TryParseExact método y proporcione un especificador de formato.
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 la referencia cultural actual, se produce un error en la operación de análisis y el método devuelve false.
Si s no contiene información de zona horaria, result contiene un DateTime valor cuya Kind propiedad es DateTimeKind.Unspecified cuando el método devuelve. Si la cadena que se va a analizar contiene información de zona horaria, result contiene un DateTime valor cuya Kind propiedad es DateTimeKind.Local cuando el método devuelve.
Notas a los autores de las llamadas
El formato se ve influenciado por las propiedades del objeto actualDateTimeFormatInfo, que de forma predeterminada se derivan del elemento Regional y Language Options en Panel de control. El TryParse método puede producir un error inesperado y devolver False si las propiedades y TimeSeparator actuales DateSeparator se establecen en el mismo valor.
Consulte también
- Parse
- CultureInfo
- DateTimeFormatInfo
- Analizar cadenas de fecha y hora en .NET Framework
- Cadenas con formato de fecha y hora estándar
- Cadenas con formato de fecha y hora personalizado
- Ejemplo: Utilidad de formato WinForms de .NET Core (C#)
- Ejemplo: Utilidad de formato WinForms de .NET Core (Visual Basic)
Se aplica a
TryParse(ReadOnlySpan<Char>, IFormatProvider, DateTimeStyles, DateTime)
Convierte la representación de intervalo de una fecha y hora en su valor DateTime equivalente mediante la información de formato de la referencia cultural y el estilo de formato especificados, y devuelve un valor que indica si la conversión se ha realizado correctamente.
public:
static bool TryParse(ReadOnlySpan<char> s, IFormatProvider ^ provider, System::Globalization::DateTimeStyles styles, [Runtime::InteropServices::Out] DateTime % result);
public static bool TryParse (ReadOnlySpan<char> s, IFormatProvider? provider, System.Globalization.DateTimeStyles styles, out DateTime result);
public static bool TryParse (ReadOnlySpan<char> s, IFormatProvider provider, System.Globalization.DateTimeStyles styles, out DateTime result);
static member TryParse : ReadOnlySpan<char> * IFormatProvider * System.Globalization.DateTimeStyles * DateTime -> bool
Public Shared Function TryParse (s As ReadOnlySpan(Of Char), provider As IFormatProvider, styles As DateTimeStyles, ByRef result As DateTime) As Boolean
Parámetros
- s
- ReadOnlySpan<Char>
Un intervalo que contiene los caracteres que representan la fecha y hora que se van a convertir.
- provider
- IFormatProvider
Objeto que proporciona información de formato específica de la referencia cultural acerca de s.
- styles
- DateTimeStyles
Combinación bit a bit de valores de enumeración que define cómo se va a interpretar la fecha analizada respecto a la zona horaria actual o la fecha actual. Un valor que se especifica de forma habitual es None.
- result
- DateTime
Cuando este método devuelve , contiene el DateTime valor equivalente a la fecha y hora contenida en s, si la conversión se realizó correctamente o DateTime.MinValue si se produjo un error en la conversión. Se produce un error en la conversión cuando el parámetro s es null, es una cadena vacía ("") o no contiene una representación de cadena válida de una fecha y hora. Este parámetro se pasa sin inicializar.
Devoluciones
true si el parámetro s se convierte correctamente; en caso contrario, false.