【问题标题】:How do I get days between dates如何获取日期之间的天数
【发布时间】:2011-09-22 19:53:18
【问题描述】:

我需要从存储备份的目录中删除超过 14 天的文件。我可以使用以下方法获取单个文件的时间:

start = (os.path.getmtime(join(dirpath, name))/3600*24)  

但我对如何使用 timedelta 来查找此日期与当前日期之间的差异感到困惑。

我想用这样的东西:

d = (datetime.timedelta(time.now() - os.path.getmtime(join(dirpath, dirname))  

但我就是不明白。我一个人在这里,我希望得到一些帮助。

【问题讨论】:

    标签: python timedelta


    【解决方案1】:

    试试:

    if time.time() - os.path.getmtime(filename) > 14 * 24 * 3600:
      print 'the file is older than 14 days'
    

    【讨论】:

    • 试过了,很好,非常感谢。添加了适当数量的括号,它可能只是满足我的需要。
    【解决方案2】:

    timedelta 是从另一个datetime 中减去datetime 的结果。在这个例子中,我显示我的 /bin/bash 是 1168 天,并且比我的 /dev/null 早一些:

    >>> import datetime
    >>> import os.path
    >>> datetime.datetime.fromtimestamp(os.path.getmtime("/dev/null"))
    datetime.datetime(2011, 7, 24, 18, 58, 28, 504962)
    >>> datetime.datetime.fromtimestamp(os.path.getmtime("/bin/bash"))
    datetime.datetime(2008, 5, 12, 15, 2, 42)
    >>> datetime.datetime.fromtimestamp(os.path.getmtime("/dev/null"))-datetime.datetime.fromtimestamp(os.path.getmtime("/bin/bash"))
    datetime.timedelta(1168, 14146, 504962)
    >>> d = datetime.datetime.fromtimestamp(os.path.getmtime("/dev/null"))-datetime.datetime.fromtimestamp(os.path.getmtime("/bin/bash"))
    >>> d.days
    1168
    

    【讨论】:

      【解决方案3】:
      datetime.datetime.now()-datetime.timedelta(days=14)
      

      类似的东西?

      【讨论】:

        【解决方案4】:

        aix 使用time 模块有一个非常好的答案。这是一个使用datetime的答案。

        from datetime import *
        maxdays = timedelta(14)
        mtime =datetime.fromtimestamp(os.path.getmtime(filename))
        if mtime - datetime.now() > maxdays:
            print filename, 'older than 14 days'
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-04-06
          相关资源
          最近更新 更多