我现在有一个不太理想的解决方案:
def years_between_dates(date_from, date_to)
((date_to.to_time - date_from.to_time) / 1.year.seconds).floor
end
计算不一定要精确(W/闰年等),但确实需要相当准确,并考虑到月份。3.8年应该返回3年,因此是floor
。
我正在转换to_time
以同时考虑Date
、Time
和DateTime
。
我不禁想到有一种更简洁的方法来做到以上几点。
4条答案
按热度按时间q35jwt9p1#
看起来你的方式是最优雅的。
即使在
distance_of_time_in_words
rails的定义中也有:参考文献
一个更好的版本可能是:
f1tvaqid2#
我在找别的东西的时候偶然发现了这个...
我疯了吗?你就不能
或者如果你需要它来表示“几年后”:
我看到Pioo是正确的,这里有一个修订版本。但它也不能补偿闰年,这将需要更复杂的东西。我不会在精度是关键的情况下使用更长的时间。
vxbzzdmp3#
如果你想得到两个日期之间的真实的年份,你必须考虑月份和日期,例如,如果你想得到2010-10-01到2021-09-09之间的日期,实际年份必须是10年。然后你可以使用下一个函数:
0h4hbjxa4#
就像这样简单: