【问题标题】:How to subtract the dates in ruby on rails如何在 ruby​​ on rails 中减去日期
【发布时间】:2016-08-21 21:50:21
【问题描述】:

我试图减去日期,但它只减去月份。我以 mm/dd/yyyy 格式将 params[:date] 从视图传递到控制器。 我在控制器中有一个代码

include AgeCalculatorHelper
def new
  @age = AgeCalculator.date_subtr(params[:date])
  render :index
end

在 helpers.rb 中

require 'date'
class AgeCalculator
  def self.date_subtr(date)
    (Date.today.strftime('%m/%d/%y').to_i - date.to_i)
  end

我通过错误尝试不使用to_i undefined method-'for "08/21/16":String Did you mean? -@

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4.2


    【解决方案1】:

    我认为您正在解析错误的变量。试试这个

    def self.date_subtr(date)
      Date.today - Date.strptime(date, '%m/%d/%Y')
    end
    

    这会解析格式为“mm/dd/yyy”的日期并从当前日期中减去它。我想这会给你两个日期之间的天数。

    编辑:

    你可以像这样输出年月日

    days = Date.today - Date.strptime('08-09-1991', '%m-%d-%Y')
    "#{days.to_i / 365} years #{days.to_i % 12} months #{days.to_i % 365} days"
    

    【讨论】:

    • 是的,它返回天数。 :)
    • 这是否符合您的要求?
    • 将天数除以 365 得到年份。将天数除以 12 得到月份。
    • 好的。没关系,我想要这样,例如用户输入他的出生日期,如 08-09-1991 ,他想计算他迄今为止的年龄。我正在尝试的是结果将是24 years 11 months 13 days
    • @Mani 我想你正在寻找这样的东西 - github.com/tmlee/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 2018-04-30
    • 2020-05-28
    • 1970-01-01
    • 2012-08-09
    相关资源
    最近更新 更多