2011-06-27 28 views
55

我怎样才能得到昨天的约会?我如何得到昨天的约会?

可能:

@get_time_now = Time.now.strftime('%m/%d/%Y')/86400 

@get_time_now = Time.now.strftime('%m/%d/%Y') - 1.day 

@get_time_now = Time.now./86400 

86400 = 1天,对吧? (60 * 60 * 24)

+8

不是所有天都86400秒长(的夏令变化的边界是+/- 1小时)。 –

回答

134

Date对象,你可以使用:

Date.yesterday 

或时间对象:

1.day.ago 

或轨道之外:

Date.today.prev_day 
+0

谢谢。问题解决了 –

+14

** Time.now - 1.day **也有效,只是提到了完整性。 – Gazler

+2

@Gazler:不完全。正如蒂姆彼得斯在上面提到的那样,24小时并不总是与一天相同。 –

3

您只需从Time对象中减去86400即可获得前一天的数据。如果您使用的是Rails,或者包含ActiveSupport,则可以用1.days替换86400。

如果您使用的是Date对象,而不是Time对象,则只需从中减1即可。

要检查是否一个日期/时间是前/后另一个,只是比较两个对象,就像您对数字做:

DateTime.parse("2009-05-17T22:38:42-07:00") < DateTime.parse("2009-05-16T22:38:42-07:00") 
# => false 
4

使用Date.today - 1.days。

Date.yesterday取决于当前的时间和GMT

1.9.3-p125 :100 > Date.today 
=> Wed, 29 Feb 2012 
1.9.3-p125 :101 > Date.yesterday 
=> Wed, 29 Feb 2012 
1.9.3-p125 :102 > Date.today - 1.days 
=> Tue, 28 Feb 2012 
14

的偏移努力1.day.ago后和变型就可以了:

irb(main):005:0> 1.day.ago 
NoMethodError: undefined method `day' for 1:Fixnum 

如果发现Date.today.prev_day作品对我来说:

irb(main):016:0> Date.today.prev_day 
=> #<Date: 2013-04-09 ((2456392j,0s,0n),+0s,2299161j)> 
+2

您可能并未使用Rails。 ActiveSupport为你提供这个功能 – SirLenz0rlot

+0

注意你也可以做基本的日期算术,例如'Date.today - 1' – Dennis

4

use DateTime.now - 1

1.9.3p194 :040 > DateTime.now 
=> Mon, 18 Nov 2013 17:58:45 +0530 
1.9.3p194 :041 > DateTime.now - 1 
=> Sun, 17 Nov 2013 17:58:49 +0530 

或DateTime。昨天

1.9.3p194 :042 > DateTime.yesterday 
=> Sun, 17 Nov 2013 

,或者我们可以使用Timerailsadvance方法和DateTime

1.9.3p194 :043 > Time.now.advance(days: -1) 
=> 2013-11-17 17:59:36 +0530 
1.9.3p194 :044 > DateTime.now.advance(days: -1) 
=> Sun, 17 Nov 2013 17:59:49 +0530 

advance方法还提供了此选项:years, :months, :weeks, :days, :hours, :minutes, :seconds

DateTime advance method

Time advance method

5

的Ruby 2.1.2本地时间

答:

Time.at(Time.now.to_i - 86400) 

证明:

秒的
2.1.2 :016 > Time.now 
=> 2014-07-01 13:36:24 -0400 
2.1.2 :017 > Time.now.to_i 
=> 1404236192 
2.1.2 :018 > Time.now.to_i - 86400 
=> 1404149804 
2.1.2 :019 > Time.at(Time.now.to_i - 86400) 
=> 2014-06-30 13:36:53 -0400 

一天。

86400 = 1天(60 * 60 * 24)

6
Time.now - (3600 * 24) # or Time.now - 86400 

require 'date' 

Date.today.prev_day 
+0

最清晰的香草红'Time.now - (3600 * 24) – cevaris

相关问题