代码之家  ›  专栏  ›  技术社区  ›  Sam G

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

  •  -1
  • Sam G  · 技术社区  · 7 年前

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

    返回如下日期:

    09-20-2017
    

    我想比较一下这个日期,或者更确切地说是某个时间段前这个日期的时间差,比如说7天,所以它应该是:

    09-13-2017
    

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

    09-18-2017
    

    我该怎么做?我已确保导入了timedelta,并打印了各个日期,以查看它们是否正常工作。然而,当我做currentTime时。timedelta(天=7),不打印。

    编辑

    因此,在使用中:

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

    它从不在someList中打印或附加“x”。所使用的一切都是有效的。请告知!

    1 回复  |  直到 7 年前
        1
  •  2
  •   Brad Solomon    7 年前

    使用 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 date2 日期1 日期1 9月18日。该函数以字符串形式的日期而不是日期时间对象作为输入。

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