Python /检查切片日期是否是当前日期的增量?

时间:2017-09-20 14:47:17

标签: python date datetime timedelta

我有数据,我已按以下格式格式化和切片:

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。使用的一切都是有效的。请指教!

1 个答案:

答案 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