ruby-on-rails - 一种计算Rails中两个日期之间的年数的优雅方法?

标签 ruby-on-rails

我目前有一个不太理想的解决方案:

  def years_between_dates(date_from, date_to)
    ((date_to.to_time - date_from.to_time) / 1.year.seconds).floor
  end

计算不必是精确的(有leap年等),但需要相当准确并考虑数月。 3.8年应返回3年,因此floor

我将to_time转换为DateTimeDateTime

我禁不住认为有一种更简洁的方法可以完成上述操作。

最佳答案

好像您的实际上是最优雅的方式。

即使在distance_of_time_in_words rails的定义中,它也具有:

distance_in_minutes = ((to_time - from_time) / 60.0).round
distance_in_seconds = (to_time - from_time).round

Reference

更好的版本可能是:
def years_between_dates(date_from, date_to)
  ((date_to - date_from) / 365).floor
end

关于ruby-on-rails - 一种计算Rails中两个日期之间的年数的优雅方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27967203/

相关文章:

ruby-on-rails - 为什么这两个查询以不同的顺序检索记录?

javascript - NoMethodError(#<Array :0x0000563ea01dba98>): 的未定义方法 `permit'

ruby-on-rails - acts_as_tree 和 has_many :through not working well together

ruby-on-rails - 无法在 OS X 上使用 Rails 服务器

javascript - Ruby on Rails : Getting the value from a select form field before it's submitted

ruby-on-rails - 深层嵌套资源 rails

java - Java(任何框架)中是否有 CRUD 生成器实用程序,例如 Rails 中的脚手架?

ruby-on-rails - ActiveRecord counter_cache 使用 multi_db gem 提供过时计数

ruby-on-rails - Actionmailer 无法在 Rails 2.3 中工作

javascript - 如何使用 Rails 对象的 id 设置选择下拉列表中选项的值