我有一个日期“10/10/11(m-d-y)”,我想用Python脚本添加5天。请考虑一个在月底也适用的通用解决方案。

我使用以下代码:

import re
from datetime import datetime

StartDate = "10/10/11"

Date = datetime.strptime(StartDate, "%m/%d/%y")

打印日期->正在打印'2011-10-10 00:00:00'

现在我想在这个日期上加5天。我使用了以下代码:

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

返回以下错误:

name 'timedelta' is not defined

当前回答

这里是一个从现在开始+指定天数的函数

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)

用法:

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

其他回答

我已经看到了一个熊猫的例子,但这里有一个转折,你可以直接导入Day类

from pandas.tseries.offsets import Day

date1 = datetime(2011, 10, 10)
date2 = date1 + 5 * Day()

下面是另一个使用dateutil的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')

输出:

今天:25/06/2015 15:56:09 5天后:30/06/2015 15:56:09

我刚看到一条旧帖子:

我查过了,但大部分答案都是一样的。我喜欢其中的两个答案,所以我想检查一下这两种方法的效率。

第一种方法:使用DateTime模块 第二种方法:利用熊猫的图书馆

所以我运行了大约10k次测试,熊猫库方法要慢得多。所以我建议使用内置的DateTime模块。

from datetime import date, timedelta
import pandas as pd
import timeit

def using_datetime():
    pre_date = date(2013, 10, 10)
    day_date = pre_date + timedelta(days=5)
    return day_date

def using_pd():
    start_date = "10/10/2022"
    pd_date = pd.to_datetime(start_date)
    end_date = pd_date + pd.DateOffset(days=5)
    return end_date
    

for func in [using_datetime, using_pd]:
    print(f"{func.__name__} Time Took: ",  timeit.timeit(stmt=func, number=10000))
    
# Output 
# using_datetime Time Took:  0.009390000021085143
# using_pd Time Took:  2.1051381999859586

如果现在想要添加日期,可以使用这段代码

from datetime import datetime
from datetime import timedelta


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

为了减少代码的冗长,并避免datetime和datetime之间的名称冲突。datetime时,您应该用CamelCase名称重命名类。

from datetime import datetime as DateTime, timedelta as TimeDelta

你可以这样做,我认为这样更清楚。

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

此外,如果稍后想导入datetime,也不会有名称冲突。