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
.
我有数据,我已经按照以下格式对其进行了格式化和切片:
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
.