如何在 Rails 中将当前时间增加10天

我尝试过

Time.now + 5.days

但是这并不管用,即使我依稀记得看到过,并且对能够做像 2.years这样的事情感到非常惊讶。

在 Rails 3中如何做到这一点?

137934 次浏览

使用

Time.now + 10.days

甚至

10.days.from_now

两个都很好用,你确定你在 Rails 而不只是 Ruby 吗?

如果您确实是在 Rails 中,那么您试图从哪里运行它呢?请注意,必须加载 ActiveSupport。

daysyears等是主动支持的一部分,所以这在 irb中不起作用,但在 rails console中应该起作用。

这绝对有效,我在需要将日期加到当前日期的任何地方都会使用它:

Date.today + 5

一些其他的选择,只是为了参考

-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] Date only no time included in result

在 Rails 上试试这个

Time.new + 10.days

在 Ruby 身上试试这个

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

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

DateTime.now.days_since(10)