Ruby-几天?

时间:2019-07-09 09:57:43

标签: ruby time

我需要根据三个参数:天,月和年来计算地球上有多少天。 我不知道如何将输入转换为日期。然后如何将日期转换为天数。 这是我目前的代码...

require 'date'
def age_in_days(day, month, year)
  lived = (day+"-"+month+"-"+year).to_s
  date_lived Date.parse(lived)
  return (Date.today - date_lived).to_i
end

1 个答案:

答案 0 :(得分:7)

您可以直接使用以下方法创建Date对象:

Date.new(year, month, day)

无需将其转换为字符串并进行解析。解析也可能很危险。 1982-04-02是2月4日还是4月2日?

您不能像这样添加数字和字符串,顺便说一句。 1 + '2''12'还是3? Ruby无法为您决定,因此您需要将整数显式转换为字符串。

day.to_s + "-" + month.to_s + "-" + year.to_s

或者简单地

[day, month, year].join('-')

但是您仍然不需要它:

require 'date'

def age_in_days(day, month, year)
  birthdate = Date.new(year, month, day)
  (Date.today - birthdate).to_i
end