Как добавить минуты к объекту времени

79

В Ruby, как мне сделать Time.now + 10.hours ?

Есть ли эквивалент для secsи mins? Например:

Time.now + 15.mins
керуилин
источник
1
Это не работает наоборот 10 + Time.now:: TypeError: Time can't be coerced into Fixnumно Time.now + 10работает .. для всех, у кого такая же проблема;)
Йо Людке

Ответы:

144

Ruby (язык программирования) не имеет 10.hoursэтого ActiveSupportкак часть Ruby on Rails (веб-фреймворк). И да, у него есть minutesи secondsметоды, и.

Однако Time#+(метод + для экземпляров Time) возвращает новый экземпляр Time, который находится на столько секунд в будущем. Итак, без сахара Ruby on Rails вы можете просто:

irb> t = Time.now
#=> 2011-08-03 22:35:01 -0600

irb> t2 = t + 10               # 10 Seconds
#=> 2011-08-03 22:35:11 -0600

irb> t3 = t + 10*60            # 10 minutes
#=> 2011-08-03 22:45:01 -0600

irb> t4 = t + 10*60*60         # 10 hours
#=> 2011-08-04 08:35:01 -0600
Phrogz
источник
@NailsonLandim, вы можете найти Timerizer полезным. «Синтаксис времени Rails без Rails».
Джефф Дики
Соответствующая часть документации Core Extensions - это guides.rubyonrails.org/… и следующие два раздела.
Железный Человек
77

Если вы используете ActiveSupport, вам нужен полный .minutesи .seconds.

Time.now + 10.minutes
Time.now + 10.seconds
twe4ked
источник
20

Также в ActiveSupport вы можете:

10.minutes.from_now

10.minutes.ago
махи-ман
источник
1

Объект времени

time = Time.now

Добавление минут к объекту времени:

time + 5.minutes

Sushant
источник