我尝试做了类似于以下的事情
Time.now + 5.days
但这并不起作用,尽管我依稀记得看到并深受印象的是能够像 2.years
这样做某事。
在Rails 3中我应该如何做到这一点?
我尝试做了类似于以下的事情
Time.now + 5.days
但这并不起作用,尽管我依稀记得看到并深受印象的是能够像 2.years
这样做某事。
在Rails 3中我应该如何做到这一点?
Time.now + 10.days
10.days.from_now
两种方法都可以。您确定您正在使用的是Rails而不仅仅是Ruby吗?
如果您确定正在使用Rails,则您在哪里尝试运行它?请注意,必须加载Active Support。
Time.now + 10.days
总是选择您系统的时区,而如果在 Rails 配置中没有设置任何内容,则 10.days.from_now
会选择 UTC 时区。 - Babistalikesflyingonrailsdays
, years
, 等等,是 Active Support 的一部分,所以这在 irb
中不起作用,但应该在 rails console
中起作用。
require 'active_support/time'
即可。 - darkdefender27这个确实有效,我在需要向当前日期添加天数的任何地方都使用它:
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]
只包含日期,不包括时间在Rails上尝试这个
Time.new + 10.days
在Ruby上尝试这个
require 'date'
DateTime.now.next_day(10).to_time
在Ruby中试试这个。它将返回指定天数后的新日期/时间。
DateTime.now.days_since(10)
在以下两个表达式中有一点不同:
Time.now + 10.days
3.0.1 :003 > Date.today + 1.day
=> 星期三,2022年12月14日
甚至还可以是
10.days.from_now
3.0.1: 002 > 1.day.from_now
=> 2022年12月14日15:49:57.35305172 +0600