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?
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.
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
.
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
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
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
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)
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