Checking for valid date input and convert appropriately

Michael Ross gmx at ross.cx
Fri Feb 22 00:37:10 CET 2013


On Fri, 22 Feb 2013 00:08:01 +0100, Ferrous Cranus <nikos.gr33k at gmail.com>  
wrote:

> Τη Παρασκευή, 22 Φεβρουαρίου 2013 12:03:59 π.μ. UTC+2, ο χρήστης Michael  
> Ross έγραψε:
>> 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.
>
> i just want to check for date validity from within ha same if statemnt  
> like i check the other variables and i tried a regualr expression just  
> now:
>
> if( task and ( price and price.isdigit() and price.__len__() <= 3 ) and  
> ( date and re.search( r'(\d+) (\d+) (\d+)', date ) ) ):
>
> Do i ahve somehting wrong in it?
>
> will the if become true if the user enters 21 02 2013 ?


I pretend not to know, try it out?

And try with invalid inputs, too:
211 02 2013
21 99 2013
31 02 2013



More information about the Python-list mailing list