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

Python / Check if sliced date is a delta from current date?

我有数据,我已经按照以下格式对其进行了格式化和切片:

currentTime = datetime.now().strftime("%m-%d-%Y")

哪些 returns 日期是这样的:

09-20-2017

我想比较这个日期,或者更确切地说,比较这个日期在某个时间段之前的 timedelta,比方说 7 天,所以它会是:

09-13-2017

现在,我的代码如下:

if currentTime.timedelta(days=7) < furtherSplit[0:10]:

理想情况下,我希望在 timedelta 7 的当前时间比 furtherSplit[0:10] 更早的日期时激活,后者是另一个日期,以相同的方式格式化,但从某个片段中截取文本,其中包含日期和另一个字符串。如果我要打印 furtherSplit[0:10],它 returns 这样的日期:

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")

它从不打印或附加 'x' 到 someList。使用的一切都是有效的。请指教!

使用 dateutil 模块中的 relativedelta

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减去一些时间增量)与(date2)。在您的示例中,date1 是今天,date1 是 9 月 18 日。该函数将字符串形式的日期而不是日期时间对象作为输入。

我使用 **kwargs 让您可以将任何您想要的关键字参数传递给 relativedelta。例如,您还可以指定 weeks=2.