0

So I need to make a variable in python to have it send off today's date two years ago. I am having to automate a report in Salesforce using Selenium and need to have the form created by a send.keys() method from a variable.

enter image description here The variable I have for today's date is :

from datetime import date
import time
today = date.today()
current_date = today.strftime("%m/%d/%Y")

However, I need the past date to be that value printed from two years ago.

from datetime import date
import time
today = date.today()
past_date = today.strftime("%m/%d/%Y") - 2*(365)

However, I get this output:

>>> past_date = today.strftime("%m/%d/%Y") - 2*(365)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for -: 'str' and 'int'

I presume it has something to with integer operations and string operations being in the same variable, thereby causing a string mismatch. Does anyone have a solution to help me get the date from two years ago in a dynamic way?

R. Barrett
  • 685
  • 11
  • 34

2 Answers2

1

This can all be done with standard library.

To specifically address your error, on this line you are turning the date into a string and then trying to subtract numbers from it.

past_date = today.strftime("%m/%d/%Y") - 2*(365)

However to solve your issue we can change the code up a little:

from datetime import date
today = date.today()
current_date = today.strftime("%m/%d/%Y")

try:
    past_date = today.replace(year=today.year-2) # the 2 on this line is how many years in the past you need.
except ValueError:
    past_date = today.replace(year=today.year-2, day=today.day-1)

print(past_date)

The try-except is to handle leap year issues.

Rashid 'Lee' Ibrahim
  • 1,357
  • 1
  • 9
  • 21
0

Many thanks to @Ευάγγελος Γρηγορόπουλος I was able to get the following to work based off his comments from How to subtract a day from a date?

I was able to use

from datetime import datetime, timedelta
past_date = datetime.today() - timedelta(days=730)
R. Barrett
  • 685
  • 11
  • 34