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.