我有一个日期“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

当前回答

有时我们需要使用从日期到日期的搜索。如果使用date__range,则需要给to_date加上1天,否则queryset将为空。

例子:

from datetime import timedelta  

from_date  = parse_date(request.POST['from_date'])

to_date    = parse_date(request.POST['to_date']) + timedelta(days=1)

attendance_list = models.DailyAttendance.objects.filter(attdate__range = [from_date, to_date])

其他回答

试试这个:

在当前日期上增加5天。

from datetime import datetime, timedelta

current_date = datetime.now()
end_date = current_date + timedelta(days=5) # Adding 5 days.
end_date_formatted = end_date.strftime('%Y-%m-%d')
print(end_date_formatted)

从当前日期减去5天。

from datetime import datetime, timedelta

current_date = datetime.now()
end_date = current_date + timedelta(days=-5) # Subtracting 5 days.
end_date_formatted = end_date.strftime('%Y-%m-%d')
print(end_date_formatted)

首先导入timedelta和date。

from datetime import timedelta, date

date.today()将返回今天的日期时间,然后你可以给它添加一个timedelta:

end_date = date.today() + timedelta(days=10)

我猜你错过了一些类似的东西:

from datetime import timedelta

前面的答案是正确的,但通常更好的做法是:

import datetime

然后使用datetime.timedelta:

date_1 = datetime.datetime.strptime(start_date, "%m/%d/%y")

end_date = date_1 + datetime.timedelta(days=10)

我刚看到一条旧帖子:

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

第一种方法:使用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