Adding 5 days to a date in Python

匿名 (未验证) 提交于 2019-12-03 02:05:01

问题:

I have a date "10/10/11(m-d-y)" and I want to add 5 days to it using a Python script. Please consider a general solution that works on the month ends also.

I am using following code:

import re from datetime import datetime  StartDate = "10/10/11"  Date = datetime.strptime(StartDate, "%m/%d/%y") 

print Date -> is printing '2011-10-10 00:00:00'

Now I want to add 5 days to this date. I used the following code:

EndDate = Date.today()+timedelta(days=10) 

Which returned this error:

name 'timedelta' is not defined 

回答1:

The previous answers are correct but it's generally a better practice to do:

import datetime 

Then you'll have, using datetime.timedelta:

date_1 = datetime.datetime.strptime(start_date, "%m/%d/%y")  end_date = date_1 + datetime.timedelta(days=10) 


回答2:

Import timedelta first.

from datetime import timedelta 

And Date.today() will return today's datetime, may be you want

EndDate = Date + timedelta(days=10) 


回答3:

I guess you are missing something like that:

from datetime import timedelta 


回答4:

If you happen to already be using pandas, you can save a little space by not specifying the format:

import pandas as pd startdate = "10/10/2011" enddate = pd.to_datetime(startdate) + pd.DateOffset(days=5) 


回答5:

Here is another method to add days on date using dateutil's relativedelta.

from datetime import datetime from dateutil.relativedelta import relativedelta  print 'Today: ',datetime.now().strftime('%d/%m/%Y %H:%M:%S')  date_after_month = datetime.now()+ relativedelta(days=5) print 'After 5 Days:', date_after_month.strftime('%d/%m/%Y %H:%M:%S') 

Output:

Today: 25/06/2015 15:56:09

After 5 Days: 30/06/2015 15:56:09



回答6:

Here is a function of getting from now + specified days

import datetime  def get_date(dateFormat="%d-%m-%Y", addDays=0):      timeNow = datetime.datetime.now()     if (addDays!=0):         anotherTime = timeNow + datetime.timedelta(days=addDays)     else:         anotherTime = timeNow      return anotherTime.strftime(dateFormat) 

Usage:

addDays = 3 #days output_format = '%d-%m-%Y' output = get_date(output_format, addDays) print output 


回答7:

In order to have have a less verbose code, and avoid name conflicts between datetime and datetime.datetime, you should rename the classes with CamelCase names.

from datetime import datetime as DateTime, timedelta as TimeDelta 

So you can do the following, which I think it is clear.

date_1 = DateTime.today()  end_date = date_1 + TimeDelta(days=10) 

Also, there would be no name conflict if you want to import datetime later on.



回答8:

If you want add days to date now, you can use this code

from datetime import datetime from datetime import timedelta   date_now_more_5_days = (datetime.now() + timedelta(days=5) ).strftime('%Y-%m-%d') 


回答9:

This is my initial but more complete development for a generic dateadd function in python

import datetime from dateutil.relativedelta import relativedelta  def dateadd(date, part ,value):      if part=='year':         result = date + (value * relativedelta(years = 1))     elif part == 'month':         result = date + (value * relativedelta(months = 1))     elif part == 'day':         result = date + (value * relativedelta(days = 1))     elif part == 'hour':         result = date + (value * relativedelta(hours = 1))     elif part == 'minute':         result = date + (value * relativedelta(minutes = 1))     elif part == 'second':         result = date + (value * relativedelta(seconds = 1))     return result   date = datetime.datetime.now() print(date, "now") print(dateadd(date,'year',2)   ,"year',2", ) print(dateadd(date,'year',-2)  ,"year',-2", ) print(dateadd(date,'month',2)  ,"month',2", ) print(dateadd(date,'month',-2) ,"month',-2", ) print(dateadd(date,'day',2)    ,"day',2", ) print(dateadd(date,'day',-2)   ,"day',-2", ) print(dateadd(date,'hour',2)   ,"hour',2", ) print(dateadd(date,'hour',-2)  ,"hour',-2", ) print(dateadd(date,'minute',2) ,"minute',2", ) print(dateadd(date,'minute',-2),"minute',-2", ) print(dateadd(date,'second',2) ,"second',2", ) print(dateadd(date,'second',-2),"second',-2", ) 

Result:
2018-03-08 09:04:12.619699 now
2020-03-08 09:04:12.619699 year',2
2016-03-08 09:04:12.619699 year',-2
2018-05-08 09:04:12.619699 month',2
2018-01-08 09:04:12.619699 month',-2
2018-03-10 09:04:12.619699 day',2
2018-03-06 09:04:12.619699 day',-2
2018-03-08 11:04:12.619699 hour',2
2018-03-08 07:04:12.619699 hour',-2
2018-03-08 09:06:12.619699 minute',2
2018-03-08 09:02:12.619699 minute',-2
2018-03-08 09:04:14.619699 second',2
2018-03-08 09:04:10.619699 second',-2



标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!