Я пробовал сделать что-то вроде
Time.now + 5.days
но это не работает, хотя я смутно помню, как видел и был очень впечатлен тем, что могу делать что-то вроде 2.years
и т. д.
Как мне это сделать в Rails 3?
Я пробовал сделать что-то вроде
Time.now + 5.days
но это не работает, хотя я смутно помню, как видел и был очень впечатлен тем, что могу делать что-то вроде 2.years
и т. д.
Как мне это сделать в Rails 3?
Ответы:
Использовать
Time.now + 10.days
или даже
10.days.from_now
Оба определенно работают. Вы уверены, что используете Rails, а не только Ruby?
Если вы определенно используете Rails, откуда вы пытаетесь это запустить? Обратите внимание, что активная поддержка должна быть загружена.
Time.now + 10.days
всегда выбирает часовой пояс вашей системы, тогда как 10.days.from_now
выбирает часовой пояс UTC, если в конфигурации rails ничего не установлено.
Time.zone.now
вместо Time.now
.
days
, years
и т. д. являются частью активной поддержки, так что это не работает irb
, но должно работать rails console
.
require 'active_support/time'
в начале сеанса или перед тем, как использовать его команды
Это определенно работает, и я использую это везде, где мне нужно добавить дни к текущей дате:
Date.today() + 5
Некоторые другие варианты, просто для справки
-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]
Только дата, в результат не включено времяПопробуйте это на Rails
Time.new + 10.days
Попробуйте это на Ruby
require 'date'
DateTime.now.next_day(10).to_time