¿Por qué DateTime. TryParse devuelve falso cuando se le da una cadena de año real?
Pregunta
En el siguiente código, le doy a la función un sTransactionDate = " 1999 " y estoy tratando de convertirlo en una fecha x / x / 1999.
DateTime dTransactionDate = new DateTime();
if(DateTime.TryParse(sTransactionDate, out dTransactionDate))
{ //Happy
}else
{ //Sad
}
si la cadena es " 1999 " siempre terminará en tristeza. ¿Alguna idea?
Solución
Pruebe algo como esto (ajuste el CultureInfo
y DateTimeStyles
adecuadamente):
DateTime.TryParseExact
("1999",
"yyyy",
CultureInfo.InvariantCulture,
DateTimeStyles.None,
out dTransactionDate)
Otros consejos
¿Qué tal ...
DateTime dTransactionDate = new DateTime();
if (DateTime.TryParseExact(sTransactionDate, "yyyy",
CultureInfo.InvariantCulture, DateTimeStyles.None, out dTransactionDate))
{
// Happy
}
else
{
// Sad
}
... o incluso solo ...
DateTime dTransactionDate = new DateTime(int.Parse(sTransactionDate), 1, 1);
// Happy
"1999" no es una cita, es un año intente 1/1/1999
Verifique también en un calendario del sistema que la fecha que está intentando analizar existe. Al igual que encontrarás "29/02/1949" también va a devolver falso porque nunca existió en el calendario.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow