得到昨天的日期

时间:2011-11-29 16:54:48

标签: ruby-on-rails ruby ruby-on-rails-3

这可能是一个显而易见的问题,但我对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(秒)。

6 个答案:

答案 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