avviso ai naviganti: per passarsi le date, nulla di meglio del formato standard ISO8601 (ad esempio "oggi" si scrive 2013-03-01). e quando il valore è mancante? si può usare sempre il vecchio valore-tappo "0000-00-00". his fretus, ecco qui una stupidissima funzione che valida un campo data sì congegnato (ovviamente valida date nel range di funzionamento della funzione datetime.strptime()):
DATEFMTIN = "%Y-%m-%d"
DATEFMTOUT = '%04d-%02d-%02d'
MISSINGDATE = "0000-00-00"
def isValidDate(aString):
# la stringa "0000-00-00" è il valore missing
if aString == MISSINGDATE:
return True
try:
#leggo la stringa AAAA-MM-DD in una data
aDate = datetime.strptime(aString, DATEFMTIN)
#converto la data letta in un'altra stringa
anotherString = DATEFMTOUT % (aDate.year, aDate.month, aDate.day)
#verifico che l'operazione sia idempotente
assert aString == anotherString
return True
except ValueError, e:
print "Date not Valid (value):", aString.__repr__()
return False
except AssertionError, e:
print "Date not Valid (not idempot.)", aString.__repr__()
return False
tribute: questo post non sarebbe mai esistito senza la pazienza, cura et abnegazione dell'ottimo M.Piccoli - non mi ha mandato a stendere, assieme a tutte le mie insopportabili saccenze. grazie 1K.
Nessun commento:
Posta un commento