我有数据,我已按以下格式格式化和切片:
currentTime = datetime.now().strftime("%m-%d-%Y")
返回如下日期:
09-20-2017
我想比较这个日期,或者更确切地说是这个日期的时间段,比较一段时间,让我们说7天,所以它会是:
09-13-2017
现在,我的代码说明了以下内容:
if currentTime.timedelta(days=7) < furtherSplit[0:10]:
理想情况下,我希望在timedelta 7的currentTime比earlySplit [0:10]更早的日期时激活,这是另一个日期,格式相同,但是从某个段切割的文本,具有日期和另一个字符串。如果我要打印FurtherSplit [0:10],它会返回如下日期:
09-18-2017
我怎样才能让它发挥作用?我确保timedelta是进口的,并打印各个日期以查看它们的工作情况。但是,当我执行currentTime.timedelta(days = 7)时,它不会打印。
修改
在Brad Solomon的帮助/要求下,这是一个更新的问题:
所以,在使用中:
from dateutil.relativedelta import relativedelta
...
def compare_dates(date1, date2, **kwargs):
date1 = datetime.datetime.strptime(date1, '%m-%d-%Y')
date2 = datetime.datetime.strptime(date2, '%m-%d-%Y')
td = relativedelta(**kwargs)
return date1 - td < date2
...
if compare_dates(currentTime, furtherSplit[0:10], days=7):
someList.append(x)
print ("get here")
它从不打印或附加&#39; x&#39;到someList。使用的一切都是有效的。请指教!
答案 0 :(得分:2)
使用relativedelta
模块中的dateutil
。
from datetime import datetime
from dateutil.relativedelta import relativedelta
def compare_dates(date1, date2, **kwargs):
date1 = datetime.strptime(date1, '%m-%d-%Y')
date2 = datetime.strptime(date2, '%m-%d-%Y')
td = relativedelta(**kwargs)
return date1 - td < date2
d1 = datetime.now().strftime('%m-%d-%Y')
d2 = '09-18-2017'
print(compare_dates(d1, d2, days=7))
True
回到你的具体例子:函数说,比较(date1
减去一些timedelta)到(date2
)。在您的示例中,date1
是今天,date1
是9月18日。该函数采用字符串形式日期而不是日期时间对象作为输入。
我使用**kwargs
让您传递任何想要relativedelta
的关键字参数。例如,您也可以指定weeks=2
。