2011-01-11 8 views
87

He intentado hacer algo comoCómo añadir 10 días a la hora en los carriles

Time.now + 5.days 

pero eso no funciona, a pesar de que vagamente recuerdo haber visto, y siendo muy impresionado, con la posibilidad de hacer algo como 2.years etc.

¿Cómo hago eso en Rails 3?

+0

Eso debería funcionar. ¿Qué error estás recibiendo? – cam

+0

tag added for activesupport – sethvargo

+0

Debería funcionar sí. Como estás en los rieles, Time.zone.now suena más apropiado – Ben

Respuesta

223

Uso

Time.now + 10.days 

o incluso

10.days.from_now 

Tanto definitivamente el trabajo. ¿Estás seguro de que estás en Rails y no solo de Ruby?

Si definitivamente estás en Rails, ¿de dónde tratas de ejecutar esto? Tenga en cuenta que el soporte activo debe estar cargado.

+1

que funcionó. 'irb' no ejecutará este –

+0

@yuval funciona en rieles y no en rubí ... Piensa que lo tienes pero solo para ayudar a otros – Catmandu

+1

Esto es simplemente fantástico. Me encantan algunos Ruby and Rails. – wpp

17

days, years, etc., son parte del apoyo activo, así que esto no va a funcionar en irb, pero debería funcionar en rails console.

+0

yeup - spot on. no puedo hacer esto en vainilla ruby. –

8

Esto definitivamente funciona y lo uso esto dondequiera que tengo que añadir días a la fecha actual:

Date.today() + 5 
4

Algunas otras opciones, apenas para la referencia

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

Basta con enumerar 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 

Así que ahora, cuál es la diferencia entre ellos si nos importa la zona horaria:

  • [1, 4] Con el sistema de zona horaria
  • [2, 3] Con config zona horaria de su aplicación Rails
  • [5] Sólo fecha ningún momento incluido en consecuencia
1

Intente esto en rieles

Time.new + 10.days 

Try esto en Ruby

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

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

DateTime.now.days_since(10) 
Cuestiones relacionadas