Quiero comprobar si una fecha tiene un formato correcto. Hay muchas posibilidades de fechas correctas como:DateTime.TryParse todo tipo posible de fechas
- 02.08.2010
- 2.8.2010
- 02.8.2010 02,08
- 02.August
- ...
I puede probar cada uno con un código como este:
if (DateTime.TryParse(DateTime.ParseExact(date, "dd.M.",
new CultureInfo("sl-SI")).ToString(), out dt))
Pero luego puedo tener 40 declaraciones if. ¿Es posible verificar todas las fechas con una declaración if o un ciclo?
Actualización:
Sobre la base de las respuestas hasta ahora, estoy probando este código, pero tienen un problema más. ¿Y si tengo solo 9.2 no 9.2.2010 continuación, este código no funcionará:
CultureInfo ci = CultureInfo.GetCultureInfo("sl-SI");
string[] fmts = ci.DateTimeFormat.GetAllDateTimePatterns();
if (DateTime.TryParseExact(date, fmts, ci, DateTimeStyles.AssumeLocal, out dt))
{
DateTime = Convert.ToDateTime(date);
Check = true;
}
Debo añadir manualmente estos tiempos o qué puedo hacer?
¿Por qué acepta todos los formatos posibles de fecha como entrada válida? –
por favor agregue actualizaciones a su pregunta o use la función de comentarios. También, por favor no use las respuestas para decir gracias, use un comentario o mejor, voto positivo y marque como aceptado: http://blog.stackoverflow.com/2011/01/how-to-say-thanks-in-an-answer/ – Kev
Puede que desee ver esto también [robust-datetime-parser-library-for-net] (http://stackoverflow.com/questions/7297622/robust-datetime-parser-library-for-net) – nawfal