【问题标题】:How to compare a date from a list with todays date?如何将列表中的日期与今天的日期进行比较?
【发布时间】:2020-06-17 11:52:57
【问题描述】:

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

我从远程 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()

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

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'

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

【问题讨论】:

    标签: python date datetime time python-datetime


    【解决方案1】:

    首先,您不能从字符串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 列表,还需要使用列表推导式来获得所需的输出。

    【讨论】:

      猜你喜欢
      • 2014-11-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-12
      • 1970-01-01
      • 2017-09-26
      相关资源
      最近更新 更多