¿Por qué esta fecha no funciona en C # .net 1.1?
Pregunta
private bool ValidDateCheck(){
bool _isValid = true;
try{
DateTime.Parse("07/&*/2009");
DateTime d = Convert.ToDateTime("07/&*/2009");
}
catch{
_isValid = false;
}
return _isValid;
}
¿Cómo el código anterior no lanza una excepción?
Solución
Esto es de la .NET 1.1 documentación :
La cadena s se analiza utilizando el formateo de información en una DateTimeFormatInfo inicializado para el cultura actual.
Este método intenta analizar s completamente y evitar tirar FormatException. Ignora datos no reconocidos si es posible y llena el mes, día y año faltantes información con la hora actual. Si s contiene solo una fecha y no hora, este método asume 12 A.M. Alguna Blanco principal, interior o trasero el carácter de espacio en s se ignora.
El parámetro s debe contener el representación de una fecha y hora en uno de los formatos descritos en el Tema DateTimeFormatInfo.
No puedo probar esto porque la versión más antigua que puedo construir con VS2008 es 2.0.
Otros consejos
El código no lanza una excepción porque las excepciones se lanzan en tiempo de ejecución, y este código nunca se ejecuta. Sé que nunca se ejecuta porque no hay forma de que se compile con comillas simples para los literales de cadena. Necesitas usar comillas dobles para las cadenas.
Si las comillas simples son solo un error tipográfico, edite la pregunta y le daré otra mirada.