我有一个日期“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
我刚看到一条旧帖子:
我查过了,但大部分答案都是一样的。我喜欢其中的两个答案,所以我想检查一下这两种方法的效率。
第一种方法:使用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
下面是另一个使用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
使用时间增量你可以做:
import datetime
today=datetime.date.today()
time=datetime.time()
print("today :",today)
# One day different .
five_day=datetime.timedelta(days=5)
print("one day :",five_day)
#output - 1 day , 00:00:00
# five day extend .
fitfthday=today+five_day
print("fitfthday",fitfthday)
# five day extend .
fitfthday=today+five_day
print("fitfthday",fitfthday)
#output -
today : 2019-05-29
one day : 5 days, 0:00:00
fitfthday 2019-06-03