sputn1ck
sputn1ck

Reputation: 163

How to increment an integer day by 5 days in python

Very new to python, please excuse the noob question:

I have a number that represents a date like :

date = 20121228  

( representing December 28th, 2012)

How can I increment that date by 5 days in python so I end up with a new (correct) number representing the date like

date = 20130102

I don't want:

date = 20121233

Update: When I try and use datetime.strptime I get this error:

Traceback (most recent call last):
  File "<stdin>", line 1, in ?
AttributeError: type object 'datetime.datetime' has no attribute 'strptime'

Upvotes: 2

Views: 614

Answers (3)

Martijn Pieters
Martijn Pieters

Reputation: 1123440

Parse it to a datetime.date() object, add 5 days, then reformat back to your number:

from datetime import datetime, timedelta

dt = datetime.strptime(str(date), '%Y%m%d').date()
dt += timedelta(days=5)
date = int(dt.strftime('%Y%m%d'))

Demonstration:

>>> from datetime import datetime, timedelta
>>> date = 20121228
>>> dt = datetime.strptime(str(date), '%Y%m%d').date()
>>> dt += timedelta(days=5)
>>> int(dt.strftime('%Y%m%d'))
20130102

For Python versions before Python 2.5, you'll need to use the time.strptime() version:

import time
from datetime import datetime, timedelta
dt = datetime(*(time.strptime(str(date), '%Y%m%d')[:6]))
dt += timedelta(days=5)
date = int(dt.strftime('%Y%m%d'))

Upvotes: 1

brian buck
brian buck

Reputation: 3454

You'll need to convert your date into a string first. Then use a timedelta object to add the days to the datetime object.

from datetime import datetime, timedelta

d = datetime.strptime(str(20121228), "%Y%m%d")
print (d + timedelta(days=5)).strftime("%Y%m%d")

Upvotes: 0

mickeybob
mickeybob

Reputation: 457

Try this:

date = 20121228
from datetime import datetime, timedelta
dt = datetime.strptime(str(date), "%Y%m%d").date() + timedelta(days=5)
print datetime.strftime(dt, "%Y%m%d")

Upvotes: 6

Related Questions