PDA

Ver la Versión Completa : ¿Cómo validar fechas?


NFleitas
19-10-2012, 15:13:33
Que tal?
Como puedo validar que el usuario me ingreso una fecha con el formato correspondiente(MM/DD/AAAA)?
Agradeceria sus respuestas!

gatosoft
19-10-2012, 16:06:29
Si utilizas un componente para captura de fechas, como un DateTimePicker, éste te ayuda con la validación... pero si estas permitiendo que el usuario digite libremente debes esperar cualquier cosa...

La forma facil que veo es:

Try
{Ojo: afecta la variable global ShortDateFormat para toda la aplicación}
ShortDateFormat:= 'mm/dd/yyyy';
StrToDate(Edit1.Text);
ShowMessage('Fecha OK');
except
ShowMessage('Fecha no valida');
end;


La función StrToDate acepta un segundo parametro TFormatSettings que es un registro que contiene entre otras variables ShortDateFormat... asi que puedes crear localmente un registro de este tipo configurarlo a tu antojo (sin afectar las variables globales) y enviarl como parametro de la función...

bye

Casimiro Notevi
19-10-2012, 16:30:08
..
Bienvenido a clubdelphi, ¿ya leiste nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php)?, gracias por tu colaboración :)

He modificado el título por algo más descriptivo a lo que preguntas, por favor, tenlo en cuenta para próximas preguntas, gracias.

Se supone que estás preguntando para hacerlo en python, ¿has visto los ejemplos de la ayuda?

NFleitas
19-10-2012, 17:08:20
Gracias por las aclaraciones!

Ya me las arregle intentando con esto!

from time import mktime, strptime
from datetime import datetime

inicio = raw_input("Ingrese fecha (MM/DD/AAAA) inicial a buscar: ")
result = None

for format in ['%m/%d/%Y']:
try:
result = datetime.strptime(inicio, format)
except:
pass

if result is None:
print 'Malformed date.'
else:
print 'Date is fine'

Casimiro Notevi
19-10-2012, 17:34:34
Gracias por comentarlo ^\||/

gatosoft
19-10-2012, 18:18:15
... Se supone que estás preguntando para hacerlo en python ...

My Fault...! :rolleyes:

Casimiro Notevi
19-10-2012, 18:30:03
Eso le pasa a cualquiera, no es la primera vez, ni será la última :)