我想获得两个日期之间的四舍五入的年数。 relativedelta
的 years
属性几乎可以做到这一点,但因为它服务于不同的用例,所以它总是向下舍入而不是使用标准舍入规则:
from datetime import datetime, date
from dateutil.relativedelta import relativedelta
almost_one_year_ago = date.today() - relativedelta(years=1) + relativedelta(days=1)
print(relativedelta(date.today(), almost_one_year_ago).years)
这输出0
,我想要1
。
有没有一种好方法可以按照标准舍入规则将年数作为整数获取?例如:如果低于 0.5 年则向下舍入,如果等于或高于 0.5 年则向上舍入?
最佳答案
您可以计算天数差异,将其除以 365,然后四舍五入,如下所示:
print(round((date.today() - almost_one_year_ago).days/365))
另一种考虑闰年的方法:
from datetime import datetime, date
from dateutil.relativedelta import relativedelta
target_date = date.today() - relativedelta(years=1) + relativedelta(days=1)
year_cnt = 0
one_year_ago = date.today() - relativedelta(years=1)
while ( target_date < one_year_ago ):
year_cnt += 1 # because it's a full year
one_year_ago -= relativedelta(years=1)
half_year_ago = one_year_ago + relativedelta(months=6)
if ( target_date <= half_year_ago ):
year_cnt += 1 # because it's greater or equal a half year (>= 0.5)
print(year_cnt)
我只是计算所有整年,然后检查剩余时间是否超过半年。
关于python - 计算两个日期之间的年数,但以标准方式四舍五入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52290952/