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?


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.


@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.


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

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

4

Prueba esto en Rails

Time.new + 10.days 

Prueba esto en Ruby

require 'date'
DateTime.now.next_day(10).to_time

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)
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.