如何计算日期之间的天数

4 投票
4 回答
1341 浏览
提问于 2025-04-17 02:52

我需要从一个存放备份的文件夹中删除那些超过14天的文件。我可以通过类似下面的方式获取单个文件的时间:

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

但是我对如何使用timedelta来计算这个时间和当前日期之间的差距感到困惑。

我想用类似下面的方式:

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

但我就是搞不懂。我现在一个人搞这个,真希望能有人帮帮我。

4 个回答

0

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'
2

一个 timedelta 是通过从一个 datetime 中减去另一个 datetime 得到的结果。在这个例子中,我展示了我的 /bin/bash 比我的 /dev/null 要大1168天和一些时间:

>>> 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
5

试试这个:

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

撰写回答