Подтвердить что ты не робот

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

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

может быть:

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

4b9b3361

Ответ 1

Рельсы

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

Date.yesterday

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

1.day.ago

Рубин

Или за пределами рельсов:

Date.today.prev_day

Ответ 2

Попробовав 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)>

Ответ 3

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

или

require 'date'

Date.today.prev_day

Ответ 4

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)

Ответ 5

Используйте 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 

Ответ 6

использовать 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.yesterday

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

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

Метод продвижения по времени

Ответ 7

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

Если вы используете объект Date, а не объект Time, просто вычтите из него 1.

Чтобы проверить, есть ли одна дата/время до/после другого, просто сравните два объекта, как вы делали бы для чисел:

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