Reputation: 163
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
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
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
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