这可能是一个显而易见的问题,但我对ruby并不熟悉,而且我花了很多时间试图获得昨天的黄瓜测试日期,检查包含昨天日期的网址。例如: http://www.blah.co.uk/blah/blah/schedule/2011-11-28
我在帮助器方法中创建了以下内容:
def Helper.get_date
Time.now.strftime('%Y-%m-%d') / 1.day
end
但它不喜欢/1.day
或– 1.day
或– 86400
(秒)。
答案 0 :(得分:8)
您可以使用ActiveSupport中的某些方法(如果您使用的是Rails应用程序,则会包含这些方法)来执行以下操作:
DateTime.yesterday.strftime('%Y-%m-%d')
编辑: 由于它是标准日期格式,您还可以直接引用该标准:
DateTime.yesterday.iso8601
答案 1 :(得分:7)
(Date.today-1).strftime('%Y-%m-%d')
将是一种非特定于轨道的方式。
答案 2 :(得分:2)
作为对这里答案的补充,我认为值得为整数和数字指出典型的Ruby on Rails辅助方法:
ruby-1.8.7-p352 :002 > 1.days.ago
=> Tue, 29 Nov 2011 04:55:21 UTC +00:00
ruby-1.8.7-p352 :003 > 1.month.ago
=> Sun, 30 Oct 2011 04:55:54 UTC +00:00
ruby-1.8.7-p352 :004 > 1.week.from_now
=> Wed, 07 Dec 2011 04:56:17 UTC +00:00
答案 3 :(得分:1)
使用:
def Helper.get_date
(Time.now / 1.day).strftime('%Y-%m-%d')
end
因为你是减少日期而不是字符串。
答案 4 :(得分:1)
Date.yesterday应该有效:
$ bundle exec rails console
Loading development environment (Rails 3.0.7)
ree-1.8.7-2011.03 :001 > Date.yesterday.to_s
=> "2011-11-29"
ree-1.8.7-2011.03 :002 > "#{ Date.yesterday }"
=> "2011-11-29"
答案 5 :(得分:0)
我会使用像
这样的东西def Helper.get_date
(Time.now - 60*60*24).strftime('%Y-%m-%d')
end
这是对strftime可以采用的参数的一个很好的引用: http://www.ruby-doc.org/core-1.9.3/Time.html#method-i-strftime