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

Yuv*_*rmi 103 datetime ruby-on-rails activesupport ruby-on-rails-3

我试过做类似的事情

Time.now + 5.days
Run Code Online (Sandbox Code Playgroud)

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

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

gun*_*unn 271

使用

Time.now + 10.days
Run Code Online (Sandbox Code Playgroud)

甚至

10.days.from_now
Run Code Online (Sandbox Code Playgroud)

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

如果你肯定是在Rails中,你在哪里尝试运行它?请注意,必须加载Active Support.

  • 有一个微妙的区别.`Time.now + 10.days`总是选择你的系统时区,而`10.days.from_now`如果在rails config中没有设置,则会选择UTC时区. (4认同)

Jon*_*ian 20

days,years等等,都是积极支持的一部分,所以这是行不通的irb,但它应该工作rails console.

  • 也适用于 irb。如果您安装了 gem,只需在会话开始时或使用它的命令之前执行“require 'active_support/time'” (2认同)

Hie*_*ham 10

其他一些选项,仅供参考

-10.days.ago
# Available in Rails 4
DateTime.now.days_ago(-10)
Run Code Online (Sandbox Code Playgroud)

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

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

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

  • [1, 4] 使用系统时区
  • [2, 3] 使用Rails应用程序的配置时区
  • [5] 日期只有结果中没有包含时间


小智 9

这肯定有效,我在任何需要在当前日期添加天数的地方使用它:

Date.today() + 5
Run Code Online (Sandbox Code Playgroud)


Rah*_*tel 5

在 Rails 上试试这个

Time.new + 10.days 
Run Code Online (Sandbox Code Playgroud)

在 Ruby 上试试这个

require 'date'
DateTime.now.next_day(10).to_time
Run Code Online (Sandbox Code Playgroud)