Как добавить 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, откуда вы пытаетесь это запустить? Обратите внимание, что активная поддержка должна быть загружена.


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


2

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

DateTime.now.days_since(10)
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.