115

我试着做类似的事情

Time.now + 5.days

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

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

4

6 回答 6

300

采用

Time.now + 10.days

甚至

10.days.from_now

两者都肯定有效。你确定你在 Rails 而不仅仅是 Ruby 吗?

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

于 2011-01-11T05:22:10.653 回答
23

days,years等是 Active Support 的一部分,所以这在 中不起作用irb,但它应该在 中起作用rails console

于 2011-01-11T05:23:02.513 回答
12

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

Date.today + 5
于 2011-05-26T05:12:49.180 回答
11

其他一些选项,仅供参考

-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]仅日期,结果中不包含时间
于 2016-05-21T05:16:06.667 回答
6

在 Rails 上试试这个

Time.new + 10.days 

在 Ruby 上试试这个

require 'date'
DateTime.now.next_day(10).to_time
于 2017-06-26T11:52:59.403 回答
3

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

DateTime.now.days_since(10)
于 2018-03-08T07:42:11.927 回答