如何将列表中的日期与今天的日期进行比较?

How to compare a date from a list with todays date?

我正在尝试将日期列表与现在的日期和时间进行比较。

我从远程 SSH 命令中获取这个字符串(只是一个简单的例子):

Mon Jun 15 16:52:18 2020,Mon Jun 15 16:52:35 2020,Mon Jun 15 16:52:29 2020 ...

现在的日期和时间:

now = datetime.now()

然后我将 now 的原始格式转换为与我的字符串相同的格式:

nowform = now.strftime("%a %b %d %H:%M:%S %Y")

输出正是我需要的:

Wed Jun 17 13:26:39 2020

但是现在出现了问题,我已经尝试将我的列表项的格式更改为日期时间项,正如您在此处看到的那样:

dates_1 = str(re.findall('(Mon.*|Sun.*|Tue.*|Wed.*|Thu.*|Fri.*|Sat.*|Sun.*)', output)).replace("\r", "").replace(" '", "'").replace("'", "").replace("[", "").replace("]", "")#.replace(",", ";").replace(" ; ", ";")        
print(dates_1)
dateslist = dates_1.split(",")

dates_list = [dt.datetime.strptime(date, "%a %b %d %H:%M:%S %Y").date() for date in dateslist]

print (dates_list)

然后我尝试取差(天数):

delta = nowform - dates_list
print(delta.days)

dates_list的输出就是这个

[datetime.date(2020, 6, 15), datetime.date(2020, 6, 15), datetime.date(2020, 6, 15), datetime.date(2020, 6, 15), datetime.date(2020, 6, 15), datetime.date(2020, 6, 15), datetime.date(2020, 6, 15), datetime.date(2020, 6, 15), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 17), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 17), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 15), datetime.date(2020, 6, 13), datetime.date(2020, 6, 13), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 15), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 16), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 15), datetime.date(2020, 6, 15), datetime.date(2020, 6, 15), datetime.date(2020, 6, 15), datetime.date(2020, 6, 15), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 1), datetime.date(2020, 6, 1), datetime.date(2020, 6, 17), datetime.date(2020, 6, 17), datetime.date(2020, 6, 15), datetime.date(2020, 6, 15), datetime.date(2020, 6, 15), datetime.date(2020, 6, 8), datetime.date(2020, 6, 10), datetime.date(2020, 6, 15), datetime.date(2020, 6, 15), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 15), datetime.date(2020, 6, 11), datetime.date(2020, 4, 23), datetime.date(2020, 6, 15), datetime.date(2020, 6, 16), datetime.date(2020, 5, 21), datetime.date(2020, 6, 1), datetime.date(2020, 6, 17), datetime.date(2020, 6, 14), datetime.date(2020, 6, 16), datetime.date(2020, 6, 15), datetime.date(2020, 6, 16), datetime.date(2020, 6, 16), datetime.date(2020, 6, 16), datetime.date(2020, 5, 12), datetime.date(2020, 6, 16), datetime.date(2020, 6, 16), datetime.date(2020, 6, 16), datetime.date(2020, 6, 12), datetime.date(2020, 6, 16), datetime.date(2020, 6, 16), datetime.date(2020, 6, 16), datetime.date(2020, 6, 15), datetime.date(2020, 6, 16), datetime.date(2020, 6, 15), datetime.date(2020, 6, 16), datetime.date(2020, 6, 15), datetime.date(2020, 6, 16), datetime.date(2020, 6, 11), datetime.date(2020, 6, 15), datetime.date(2020, 6, 15), datetime.date(2017, 8, 21), datetime.date(2020, 6, 15), datetime.date(2020, 6, 15), datetime.date(2020, 5, 23), datetime.date(2020, 6, 14), datetime.date(2020, 6, 15), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 14), datetime.date(2020, 6, 15), datetime.date(2020, 6, 12), datetime.date(2020, 6, 14), datetime.date(2018, 9, 12), datetime.date(2019, 10, 21), datetime.date(2020, 1, 29), datetime.date(2020, 1, 29), datetime.date(2019, 8, 1), datetime.date(2019, 8, 20), datetime.date(2020, 6, 17), datetime.date(2020, 6, 17), datetime.date(2020, 6, 17), datetime.date(2020, 6, 17), datetime.date(2020, 6, 17), datetime.date(2020, 6, 17), datetime.date(2020, 6, 17), datetime.date(2020, 6, 17), datetime.date(2020, 6, 17), datetime.date(2020, 6, 17), datetime.date(2020, 6, 17), datetime.date(2020, 6, 17), datetime.date(2020, 6, 17)]

但是它返回了这个错误:

TypeError: unsupported operand type(s) for -: 'str' and 'list'

如果我更改了格式,我怎么可能无法比较所有这些值?

首先,您不能从字符串 nowform 中减去日期时间对象列表 dates_list。其次,您需要使用 datetime.datedatetime.datetime,而不是两者的混合。然后你可以计算 timedelta 例如

import datetime
# today's date:
now = datetime.datetime.now().date()
# simulating your dates_list:
dates_list = [datetime.date(2020, 6, 15), datetime.date(2020, 6, 15), datetime.date(2020, 6, 15)]

deltas = [now-d for d in dates_list]
# deltas 
# [datetime.timedelta(days=2),
#  datetime.timedelta(days=2),
#  datetime.timedelta(days=2)]

delta_days = [td.days for td in deltas]
# delta_days
# [2, 2, 2]

请注意 nowdates_list 具有相同的数据类型,即 datetime.date。如果你想使用 Python 列表,你还需要使用列表推导来获得你想要的输出。