Cómo agregar minutos a un objeto Time

79

En Ruby, ¿cómo lo hago Time.now + 10.hours?

¿Existe un equivalente para secsy mins? Por ejemplo:

Time.now + 15.mins
keruilin
fuente
1
No funciona al revés 10 + Time.now:: TypeError: Time can't be coerced into Fixnumpero Time.now + 10funciona ... para todos los que tienen el mismo problema;)
Yo Ludke

Respuestas:

144

Ruby (el lenguaje de programación) no tiene 10.hours, eso es ActiveSupportcomo parte de Ruby on Rails (el marco web). Y sí, tiene métodos minutesy seconds.

Sin embargo, Time#+(el método + en las instancias de Time) devuelve una nueva instancia de Time que es esa cantidad de segundos en el futuro. Entonces, sin azúcar Ruby on Rails, simplemente puede hacer:

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
fuente
@NailsonLandim, es posible que encuentre útil Timerizer . "Sintaxis de tiempo de Rails sin Rails".
Jeff Dickey
La parte apropiada de la documentación de Core Extensions es guides.rubyonrails.org/… y las dos secciones siguientes.
The Tin Man
77

Si está utilizando ActiveSupport, lo que está buscando es la versión completa .minutesy .seconds.

Time.now + 10.minutes
Time.now + 10.seconds
pellizcado
fuente
20

También en ActiveSupport puede hacer:

10.minutes.from_now

10.minutes.ago
mahi-man
fuente
1

Objeto de tiempo

time = Time.now

Agregar minutos a un objeto de tiempo:

time + 5.minutes

Sushant
fuente