Как добавить 10 дней к текущему времени в Rails - PullRequest
98 голосов
/ 11 января 2011

Я пытался сделать что-то вроде

Time.now + 5.days

, но это не сработало, хотя я смутно помню, как вижу и очень впечатлен способностью сделать что-то вроде 2.years и т. Д.

Как мне это сделать в Rails 3?

Ответы [ 6 ]

260 голосов
/ 11 января 2011

Используйте

Time.now + 10.days

или даже

10.days.from_now

Оба определенно работают.Вы уверены, что находитесь в Rails, а не только в Ruby?

Если вы определенно находитесь в Rails, откуда вы пытаетесь запустить это?Обратите внимание, что Active Support должна быть загружена.

19 голосов
/ 11 января 2011

days, years и т. Д. Являются частью Active Support, поэтому это не будет работать в irb, но должно работать в rails console.

9 голосов
/ 26 мая 2011

Это определенно работает, и я использую это везде, где мне нужно добавить дни к текущей дате:

Date.today() + 5
8 голосов
/ 21 мая 2016

Некоторые другие варианты, просто для справки

-10.days.ago
# Available in Rails 4
DateTime.now.days_ago(-10)

Просто перечислите все известные мне варианты:

[1] Time.now + 10.days
[2] 10.days.from_now
[3] -10.days.ago
[4] DateTime.now.days_ago(-10)
[5] Date.today + 10

Итак, какая разница между ними, если мы заботимся очасовой пояс:

  • [1, 4] с системным часовым поясом
  • [2, 3] с настройкой часового пояса вашего Rails-приложения
  • [5] Дата только без учета времени в результате
3 голосов
/ 26 июня 2017

Попробуйте это на Rails

Time.new + 10.days 

Попробуйте это на Ruby

require 'date'
DateTime.now.next_day(10).to_time
1 голос
/ 08 марта 2018

Попробуйте это на Ruby.Он вернет новую дату / время через указанное количество дней в будущем

DateTime.now.days_since(10)
...