Checking for valid date input and convert appropriately

Michael Ross gmx at ross.cx
Thu Feb 21 23:03:59 CET 2013


On Thu, 21 Feb 2013 22:22:15 +0100, Ferrous Cranus <nikos.gr33k at gmail.com>  
wrote:

> Τη Πέμπτη, 21 Φεβρουαρίου 2013 10:14:13 μ.μ. UTC+2, ο χρήστης MRAB  
> έγραψε:
>> On 2013-02-21 19:38, Ferrous Cranus wrote:
>>
>> > import datetime from datetime
>>
>>
>>
>> Should be:
>>
>>
>>
>> from datetime import datetime
>>
>>
>>
>> >
>>
>> > try:
>>
>> >      datetime.strptime( date, '%d %m %Y' )
>>
>>
>>
>> That parses the date and discards the result.
>>
>>
>>
>> >      date = date.strptime( '%Y-%m-%d' )
>>
>>
>>
>> 'date' is a string, it doesn't have a 'strptime' method.
>>
>>
>>
>> When you parsed the date you got a datetime object; _that_ has the
>>
>> 'strptime' method.
>
> I don't need to store the date i just want to make sure is entered  
> correctly.
> I would like to have the user type the date like
>
> 21 02 2013
> and then convert it to 2013-02-21 because thats how mysql wants the date  
> in order to store it.
> Please show me how to write this.
>
> Also, can you show me how to write it that if so even if the user  
> entered date is wrong it doesn't just crash the cgi-script?i know i can  
> use tr: expect: but i want to avoid it, somehow i need to check the date  
> in the same if statemnt like i do with the other user defined varibles  
> for validity.
>

You *have* to try/expect in order to not have the script crash.
Think user typo: 21 02 2ß13

Personally, I'd use a javascript on the html so users can't POST invalid  
dates.
I use mootools for that. It accepts 21/02/2013, 21-02-2013 and 21.02.13 as  
input,
and you end up with 21.02.2013 posted to your cgi in any case.


Michael



More information about the Python-list mailing list