是否与Ruby中的以下代码相似,其中 X 表示要添加到今天日期的月份数,但来自变量
Time.zone.today + X.month ## X comes from a variable
在下面的示例中,最好不使用循环,因为'm'可能会很大
def add_months_to_today(m)
number_of_months_to_add = m.to_i
return_date = Time.zone.today
if m.to_i > 0
(1..number_of_months_to_add).each do |i|
return_date = return_date + 1.month
end
end
return_date
end
答案 0 :(得分:3)
您的代码可以正常工作:
x = 4
Time.zone.today + x.month
#=> Sun, 29 Sep 2019
month
是在Integer
上定义的方法。整数是以文字形式还是变量形式都没有关系。接收者只需是Integer
。
您也可以致电Date.current
代替Time.zone.today
:
Date.current + 4.month #=> Sun, 29 Sep 2019
Rails还向Date
添加了多种其他方法:(也通过DateAndTime::Calculations
)
Date.current.advance(months: 4) #=> Sun, 29 Sep 2019
Date.current.months_since(4) #=> Sun, 29 Sep 2019
4.months.since(Date.current) #=> Sun, 29 Sep 2019
以上内容也适用于Time
的实例:
Time.current.advance(months: 4) #=> Sun, 29 Sep 2019 10:11:52 CEST +02:00
Time.current.months_since(4) #=> Sun, 29 Sep 2019 10:11:52 CEST +02:00
4.months.since #=> Sun, 29 Sep 2019 10:11:52 CEST +02:00
仅处理日期时,也可以使用Ruby内置的>>
或next_month
:
Date.current >> 4
#=> Sun, 29 Sep 2019
Date.current.next_month(4)
#=> Sun, 29 Sep 2019
请注意,在以上所有示例中,您都可以交替使用4
和x
。