Cómo agregar 10 días a la hora actual en Rails

106

Intenté hacer algo como

Time.now + 5.days

pero eso no funciona, aunque recuerdo vagamente haber visto y estar muy impresionado con poder hacer algo como, 2.yearsetc.

¿Cómo hago eso en Rails 3?

Yuval Karmi
fuente
Eso debería funcionar. ¿Qué error estás recibiendo?
cam
Debería funcionar, sí. Mientras estás en rieles, Time.zone.now suena más apropiado
Ben

Respuestas:

284

Utilizar

Time.now + 10.days

o incluso

10.days.from_now

Ambos definitivamente funcionan. ¿Estás seguro de que estás en Rails y no solo en Ruby?

Si definitivamente estás en Rails, ¿desde dónde intentas ejecutar esto? Tenga en cuenta que se debe cargar Active Support.

Gunn
fuente
@yuval funciona en rieles y no en rubí ... creo que lo tienes, pero solo para ayudar a otros
Catmandu
1
Esto es simplemente fantástico. Me encanta Ruby and Rails.
wpp
5
Hay una sutil diferencia. Time.now + 10.dayssiempre recoge la zona horaria de su sistema, mientras 10.days.from_nowque recogerá la zona horaria UTC si no se establece nada en la configuración de rieles.
Babistalikesflyingonrails
Generalmente, es mejor usar Time.zone.nowen lugar de Time.now.
x-yuri
21

days, years, Etc., son parte de la ayuda activa, por lo que esto no funcionará en irb, pero debería funcionar en rails console.

Jonathan Julian
fuente
yeup - en el clavo. no puedo hacer esto en rubí vainilla.
Yuval Karmi
1
Funciona también en irb. Si tiene la gema instalada, simplemente hágalo require 'active_support/time'al comienzo de la sesión o antes de usar sus comandos
darkdefender27
10

Esto definitivamente funciona y lo uso cuando necesito agregar días a la fecha actual:

Date.today() + 5
dj kaori
fuente
10

Algunas otras opciones, solo como referencia.

-10.days.ago
# Available in Rails 4
DateTime.now.days_ago(-10)

Solo enumera todas las opciones que conozco:

[1] Time.now + 10.days
[2] 10.days.from_now
[3] -10.days.ago
[4] DateTime.now.days_ago(-10)
[5] Date.today + 10

Entonces, ¿cuál es la diferencia entre ellos si nos preocupamos por la zona horaria?

  • [1, 4] Con zona horaria del sistema
  • [2, 3] Con la zona horaria de configuración de su aplicación Rails
  • [5] Solo fecha sin hora incluida en el resultado
Hieu Pham
fuente
4

Prueba esto en Rails

Time.new + 10.days 

Prueba esto en Ruby

require 'date'
DateTime.now.next_day(10).to_time
Rahul Patel
fuente
2

Prueba esto en Ruby. Devolverá una nueva fecha / hora el número especificado de días en el futuro

DateTime.now.days_since(10)
Ramyani
fuente