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?

¿Fue útil?

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
scroll top