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


Intenté hacer algo como

Time.now + 5.days

Pero eso no funciona, a pesar de que recuerdo vagamente haber visto, y estar muy impresionado, con ser capaz de hacer algo como 2.years etc.

¿Cómo hago eso en Rails 3?

Author: the Tin Man, 2011-01-11

6 answers

Use

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 el soporte activo tiene que ser cargado.

 241
Author: gunn,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-16 17:49:59

days, years, etc., son parte del Soporte Activo, por lo que esto no funcionará en irb, pero debería funcionar en rails console.

 18
Author: Jonathan Julian,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-16 17:50:49

Esto definitivamente funciona y lo uso donde sea que necesite agregar días a la fecha actual:

Date.today() + 5
 8
Author: dj kaori,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-03-16 17:51:22

Algunas otras opciones, solo para referencia

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

Simplemente enumere 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 preocupamos por la zona horaria:

  • [1, 4] Con zona horaria del sistema
  • [2, 3] Con la zona horaria de configuración de tu aplicación Rails
  • [5] Fecha solamente ninguna hora incluida en el resultado
 4
Author: Hieu Pham,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-20 18:26:34

Prueba esto en Rails

Time.new + 10.days 

Prueba esto en Ruby

require 'date'
DateTime.now.next_day(10).to_time
 1
Author: Rahul Patel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-26 12:01:49

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

DateTime.now.days_since(10)
 0
Author: Ramyani,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-08 07:42:11