I have a question about a better way to do this as what I've written seems clunky. I'm trying to generate 2 variables here that will be used as the date in a BETWEEN clause in MySQL. In order to get the proper construction (YYYYMMDD) I am converting to a string and slicing. But because I use the first date (endwk) as a reference to calculate the second (startwk) I need to also store the result of endwk as its original datetime (endwkdate) type in order to use it in the calculation of startwk because I get an error if I just use endwk. This seems like a rookie workaround to me, but it does work.
However I'm new to python and trying to develop good habits, so I'd be interested to know a more efficient way to do this. Any ideas, or am I just being too picky? Here's the code:
## Goal is to produce 2 dates: Date of last Tuesday (or today if this is Tuesday) ## Date of Tuesday a week before last Tuesday import datetime # day of week as an integer to be used as an offset. If 0 then its Monday # Looking for Tuesday so subtract 1 from day of week return for Tuesday offset wkday = datetime.date.weekday(datetime.datetime.now()) - 1 nowdate= datetime.datetime.date(datetime.datetime.now()) # gets date of last Tuesday endwkdate = nowdate - datetime.timedelta(days = wkday) # need this later as a datetime object endwk= str(nowdate - datetime.timedelta(days = wkday)) # as a string for slicing d1 = endwk[:4] + endwk[5:7] + endwk[8:10] # gets date of the Tuesay a week before last Tuesday startwk = str(endwkdate - datetime.timedelta(days = 7)) d2 = startwk[:4] + startwk[5:7] + startwk[8:10] # For debug, to see that dates are correct print('d1 = ' + d1 + '\n') print('d2 = ' + d2 + '\n')