我怎么能得到昨天的约会?

Mic*_*sky 71 ruby ruby-on-rails

我怎么能得到昨天的约会?

也许:

@get_time_now    = Time.now.strftime('%m/%d/%Y') / 86400 
Run Code Online (Sandbox Code Playgroud)

要么

@get_time_now    = Time.now.strftime('%m/%d/%Y') - 1.day
Run Code Online (Sandbox Code Playgroud)

要么

@get_time_now    = Time.now. / 86400 
Run Code Online (Sandbox Code Playgroud)

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

And*_*itt 160

对于日期对象,您可以使用:

Date.yesterday
Run Code Online (Sandbox Code Playgroud)

或者是时间对象:

1.day.ago
Run Code Online (Sandbox Code Playgroud)

或者在铁轨之外:

Date.today.prev_day
Run Code Online (Sandbox Code Playgroud)

  • **Time.now - 1.day**也有效,只是提到完整性. (18认同)
  • 这假设是铁轨而不是红宝石.不是最好的建议. (17认同)
  • Date.yesterday考虑时区,并不总是给出与Date.today - 1.days相同的答案. (3认同)
  • @Gazler:不太好.正如Tim Peters上面提到的,24小时并不总是和一天相同. (2认同)
  • 同意,这是Rails,而不是Ruby. (2认同)

Koe*_*en. 14

尝试1.day.ago和变种后:

irb(main):005:0> 1.day.ago
NoMethodError: undefined method `day' for 1:Fixnum
Run Code Online (Sandbox Code Playgroud)

如果发现Date.today.prev_day对我有用:

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

  • 你可能没有使用Rails.ActiveSupport为您提供此功能 (3认同)
  • 请注意,您还可以进行基本的日期算术,例如`Date.today - 1` (3认同)

Ale*_*oVD 10

Time.now - (3600 * 24)   # or Time.now - 86400
Run Code Online (Sandbox Code Playgroud)

要么

require 'date'

Date.today.prev_day
Run Code Online (Sandbox Code Playgroud)

  • `Time.now - (3600 * 24)` 不是昨天。并不是所有的日子都是 24 小时。 (4认同)

Joh*_*gle 6

使用 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 
Run Code Online (Sandbox Code Playgroud)


sha*_*wbq 6

Ruby 2.1.2原生时间

回答:

Time.at(Time.now.to_i - 86400)
Run Code Online (Sandbox Code Playgroud)

证明:

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 
Run Code Online (Sandbox Code Playgroud)

一天的秒数.

86400 = 1天(60*60*24)


Sam*_*dhe 5

使用 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 
Run Code Online (Sandbox Code Playgroud)

或 DateTime.yesterday

1.9.3p194 :042 > DateTime.yesterday
 => Sun, 17 Nov 2013 
Run Code Online (Sandbox Code Playgroud)

或者我们可以使用rails advance方法TimeDateTime

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
Run Code Online (Sandbox Code Playgroud)

advance 方法也提供了这个选项 :years, :months, :weeks, :days, :hours, :minutes, :seconds

日期时间提前方法

时间提前法