如何在Rails中添加10天到当前时间

时间:2011-01-11 05:17:42

标签: ruby-on-rails datetime ruby-on-rails-3 activesupport

我尝试过像

这样的事情
Time.now + 5.days

但这不起作用,即使我依稀记得看到并且留下深刻印象,能够做2.years之类的事情等。

如何在Rails 3中执行此操作?

6 个答案:

答案 0 :(得分:258)

使用

Time.now + 10.days

甚至

10.days.from_now

两者都绝对有用。你确定你在Rails而不仅仅是Ruby吗?

如果你肯定在Rails中,你想从哪里运行它?请注意,必须加载Active Support。

答案 1 :(得分:19)

daysyears等是Active Support的一部分,因此这不适用于irb,但它应该在rails console中有用。

答案 2 :(得分:9)

这绝对有效,无论我需要在当前日期添加天数,我都会使用它:

Date.today() + 5

答案 3 :(得分:8)

其他一些选项,仅供参考

-10.days.ago
# Available in Rails 4
DateTime.now.days_ago(-10)

只列出我所知道的所有选项:

[1] Time.now + 10.days
[2] 10.days.from_now
[3] -10.days.ago
[4] DateTime.now.days_ago(-10)
[5] Date.today + 10

现在,如果我们关心时区,它们之间有什么区别:

  • [1, 4]使用系统时区
  • [2, 3]使用您的Rails应用的配置时区
  • [5]仅在结果中包含日期

答案 4 :(得分:3)

在Rails上试试这个

Time.new + 10.days 

在Ruby上试试这个

require 'date'
DateTime.now.next_day(10).to_time

答案 5 :(得分:1)

在Ruby上试试这个。 它将在未来的指定天数内返回新的日期/时间

DateTime.now.days_since(10)