我如何将小数年转换为年和日

How would I convert decimal years in to years and days

假设我有一个看起来像这样的小数 5.08493150685 请记住该字符串中的第一个数字是 5,也就是年数。所以我的问题是如何将 .08493150685 转换为天数。 预期结果:5 年零 31 天。 (这只是一个例子。)

比例:

0.084 : 1 = x : 365

求解 x。

不是每年的长度都一样。假设一年是 365 天,这只是一个乘法问题:

round(365*.08493150685)

对于闰年,这个数字是 366。

只要粗略估计,一年平均365.25天都可以。这将是获得年和日的一种方式:

>>> years, year_fraction = divmod(5.08493150685, 1)
>> days = round(year_fraction * 365.25)
>>> years
5
>>> days
31

更新

每年 365.25 天相当粗略。正如@martineau 在他的评论中建议的那样,365.2425 would be a better number。这考虑到完整的世纪不是闰年,除非它们可以被 400 整除。