16

Possible Duplicate:
How can I subtract a day from a python date?

I have a set of files that I'm saving by date, year_month_day.txt format. I need to open the previous day's text file for some processing. How do I find the previous day's date in python?

Community
  • 1
  • 1
Xavier
  • 8,828
  • 13
  • 64
  • 98

4 Answers4

45

Here you go:

>>> print datetime.date.today()-datetime.timedelta(1)
>>> 2010-06-19
Wai Yip Tung
  • 18,106
  • 10
  • 43
  • 47
7

Say you start with a string '2010_05_1'. Then the similar string for the previous day is:

>>> import datetime
>>> s = '2010_05_1'
>>> theday = datetime.date(*map(int, s.split('_')))
>>> prevday = theday - datetime.timedelta(days=1)
>>> prevday.strftime('%Y_%m_%d')
'2010_04_30'
>>> 

Of course you'll encapsulate all of this into one handy function!

Alex Martelli
  • 854,459
  • 170
  • 1,222
  • 1,395
5

You can use the datetime module.

import datetime
print (datetime.date(year, month, day) - datetime.timedelta(1)).isoformat()
razpeitia
  • 1,947
  • 4
  • 16
  • 36
0

In short:

  1. Convert the year/month/day to a number.
  2. Subtract 1 from that number.
  3. Convert the number to year/month/day.

You will find the localtime and mktime functions from the time module helpful.

(Also, since the time module deals with seconds, you would subtract 86400 instead of 1.)

Greg Hewgill
  • 951,095
  • 183
  • 1,149
  • 1,285