我很想在Python中操纵时间。我可以使用os.path.getmtime()
函数获取文件的(上次修改)年龄:
import os.path, time
os.path.getmtime(oldLoc)
我需要进行某种测试以确定这个时间是否在过去三个月内,但我对Python中所有可用的时间选项感到困惑。
任何人都可以提供任何见解吗?亲切的问候。
答案 0 :(得分:20)
time.time() - os.path.getmtime(oldLoc) > (3 * 30 * 24 * 60 * 60)
答案 1 :(得分:17)
为了清楚起见,您可以在此处使用一些日期时间算法。
答案 2 :(得分:4)
要查找文件是否超过3个日历月,您可以使用dateutil.relativedelta
:
#!/usr/bin/env python
import os
from datetime import datetime
from dateutil.relativedelta import relativedelta # $ pip install python-dateutil
three_months_ago = datetime.now() - relativedelta(months=3)
file_time = datetime.fromtimestamp(os.path.getmtime(filename))
if file_time < three_months_ago:
print("%s is older than 3 months" % filename)
&#34;过去3个月的确切天数&#34;在这种情况下可能与90天不同。如果您确切需要90天:
from datetime import datetime, timedelta
three_months_ago = datetime.now() - timedelta(days=90)
如果您想考虑本地utc偏移量的变化,请参阅Find if 24 hrs have passed between datetimes - Python。
答案 3 :(得分:2)
1天= 24小时= 86400秒。然后3个月大约是90天,即90 * 86400秒。您可以使用此信息来添加/减去时间。或者您可以尝试使用Python datetime模块进行日期数学运算。 (特别是timedelta)
答案 4 :(得分:2)
如果您需要确切的天数,可以将calendar
模块与日期时间结合使用,例如,
import calendar
import datetime
def total_number_of_days(number_of_months=3):
c = calendar.Calendar()
d = datetime.datetime.now()
total = 0
for offset in range(0, number_of_months):
current_month = d.month - offset
while current_month <= 0:
current_month = 12 + current_month
days_in_month = len( filter(lambda x: x != 0, c.itermonthdays(d.year, current_month)))
total = total + days_in_month
return total
然后将total_number_of_days()
的结果提供给其他人为日期算术提供的代码。
答案 5 :(得分:2)
我正在寻找类似的东西,并想出了这个替代解决方案:
from os import path
from datetime import datetime, timedelta
two_days_ago = datetime.now() - timedelta(days=2)
filetime = datetime.fromtimestamp(path.getctime(file))
if filetime < two_days_ago:
print "File is more than two days old"
答案 6 :(得分:0)
这是为了知道日期是否早3个月
从datetime导入日期,timedelta time_period = date.today() - 日期(2016年,8月10日)&lt; timedelta(天= 120)
答案 7 :(得分:0)
这是使用时间增量的通用解决方案:
from datetime import datetime
def is_file_older_than (file, delta):
cutoff = datetime.utcnow() - delta
mtime = datetime.utcfromtimestamp(os.path.getmtime(file))
if mtime < cutoff:
return True
return False
要检测超过 3 个月的文件,我们可以接近 90 天:
from datetime import timedelta
is_file_older_than(filename, timedelta(days=90))
或者,如果您可以安装外部依赖项:
from dateutil.relativedelta import relativedelta # pip install python-dateutil
is_file_older_than(filename, relativedelta(months=3))