Как добавить 10 дней к текущему времени в Rails

106

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

Time.now + 5.days

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

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

Юваль Карми
источник
Это должно сработать. Какую ошибку вы получаете?
cam
Да, это должно сработать. Поскольку вы находитесь в рельсах, Time.zone.now звучит более уместно
Бен

Ответы:

284

Использовать

Time.now + 10.days

или даже

10.days.from_now

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

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

Gunn
источник
@yuval это работает на рельсах, а не на рубине .. Думаю, у вас есть это, но только для того, чтобы помочь другим
Catmandu
1
Это просто фантастика. Я люблю Ruby и Rails.
wpp
5
Есть небольшая разница. Time.now + 10.daysвсегда выбирает часовой пояс вашей системы, тогда как 10.days.from_nowвыбирает часовой пояс UTC, если в конфигурации rails ничего не установлено.
Babistalikesflyingonrails
Как правило, лучше использовать Time.zone.nowвместо Time.now.
x-yuri
21

days, yearsи т. д. являются частью активной поддержки, так что это не работает irb, но должно работать rails console.

Джонатан Джулиан
источник
да - точно на месте. не может этого сделать в ванильном рубине.
Yuval Karmi
1
Также работает в irb. Если у вас установлен гем, просто сделайте его require 'active_support/time'в начале сеанса или перед тем, как использовать его команды
darkdefender27
10

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

Date.today() + 5
диджей каори
источник
10

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

-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] Только дата, в результат не включено время
Хиеу Фам
источник
4

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

Time.new + 10.days 

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

require 'date'
DateTime.now.next_day(10).to_time
Рахул Патель
источник
2

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

DateTime.now.days_since(10)
Рамьяни
источник