gpt4 book ai didi

python - 计算两个日期之间的年数,但以标准方式四舍五入

转载 作者:太空宇宙 更新时间:2023-11-03 14:42:27 25 4
gpt4 key购买 nike

我想获得两个日期之间的整数年数。 relativedeltayears 属性几乎可以做到这一点,但因为它服务于不同的用例,所以它总是向下舍入而不是使用标准舍入规则:

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

有没有一种好的方法可以按照标准舍入规则将年数作为整数?如:如果低于 .5 年则向下舍入,如果等于或高于 .5 则向上舍入?

最佳答案

我找到了一个与闰年兼容的解决方案。它仍然没有我想要的那么干净,但它完成了工作:

from datetime import datetime, date
from dateutil.relativedelta import relativedelta

def how_many_years_ago(input_date):
difference = relativedelta(date.today(), input_date)
result = difference.years

# Round up if closer to the next year than the previous
if difference.months >= 6:
result += 1

return result

# Exactly 1 year ago, should output 1
print(how_many_years_ago(date.today() - relativedelta(years=1)))

# Almost 1 year ago, should round up to 1
print(how_many_years_ago(date.today() - relativedelta(years=1) + relativedelta(days=1)))

# Too far removed from 35 years, should round down to 34
print(how_many_years_ago(date.today() - relativedelta(years=35) + relativedelta(months=8)))

# Almost 38 years ago, should round up to 38
print(how_many_years_ago(date.today() - relativedelta(years=38) + relativedelta(months=4)))

如果我没有忽略某些注意事项(例如闰年),此实现可以解决我的问题。

关于python - 计算两个日期之间的年数,但以标准方式四舍五入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52290952/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com