Как я могу получить вчерашнюю дату?


как я могу получить вчерашнюю дату?

возможно:

@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)

7 56

7 ответов:

для объекта даты вы можете использовать:

Date.yesterday

или объект времени:

1.day.ago

или вне рельсов:

Date.today.prev_day

после 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)>
Time.now - (3600 * 24)   # or Time.now - 86400

или

require 'date'

Date.today.prev_day

Рубин 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)

Дата Использования.сегодня - 1.дни.

дата.вчера зависит от текущего времени и вашего смещения от 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 

используйте DateTime.сейчас - 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 

или мы можем использовать railsadvance метод Time и 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

время метод

вы можете просто вычесть 86400 с Time объект, который нужно получить за день до этого. Если вы используете Rails или включили ActiveSupport, вы можете заменить 86400 на 1.days.

если вы используете