[Tutor] Please help to debug this function.. it takes a date and num. of days and returns startdate and enddate

Asrarahmed Kadri ajkadri at googlemail.com
Mon Nov 6 14:52:19 CET 2006


Hi Folks,

I have written a function that takes a date and an integer representing the
number of days.

Please test it, comment on the logic .

Here is the code:
<CODE BEGINS>


""" The function takes two arguments, date and  number of days. It checks
for the right format and if the format is okay, it calculates the end date.
"""

import string
import datetime
import traceback


def dateCheck(date1,num_days):
    flag = True
    startdate = None
    enddate = None

    if num_days < 0 or num_days > 31:
        flag = False
        print "The argument for -n has to be between 0 and 31"
        return (flag,startdate,enddate)

    else:

        date_lst = string.split(date1,"/")
        ln = len(date_lst)
        if ln != 3 :

            flag = False
            print "The argument for -D option has to be in the format:
dd/mm/yyyy"
            return (flag,startdate,enddate)
        else:
            date_lst.reverse()
            print date_lst
            try:
                if int(date_lst[0]) < 2000:
                    flag = False
                    print "The year cannot be earlier than 2000 and it
should be in the format 'yyyy'."
                    return (flag,startdate,enddate)
            except ValueError:
                flag = False
                err_msg = traceback.format_exc()
                index = string.find(err_msg,'Value')
                print err_msg[index:]
                return (flag,startdate,enddate)


            try:
                startdate = datetime.date
(int(date_lst[0]),int(date_lst[1]),int(date_lst[2]))
                enddate = startdate + datetime.timedelta(days=num_days)
                print startdate, enddate

            except ValueError:

                flag = False
                startdate = None
                enddate = None
                err_msg = traceback.format_exc()
                index = string.find(err_msg,'Value')
                print err_msg[index:]
                return (flag,startdate,enddate)

            if enddate > datetime.date.today():
                enddate = datetime.date.today()


            if startdate > datetime.date.today():
                flag = False
                startdate = None
                enddate = None
                print "The -D option should have a date not later than
today's date"


            return (flag,startdate,enddate)
<CODE ENDS>





TIA.

Regards,
Asrarahmed



 --
To HIM you shall return.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mail.python.org/pipermail/tutor/attachments/20061106/f270156b/attachment.html 


More information about the Tutor mailing list