Eu tentei fazer algo como
Time.now + 5.days
mas isso não funciona, embora eu me lembre vagamente de ter visto, e de ficar muito impressionado, por ser capaz de fazer algo como 2.years
etc.
Como faço isso no Rails 3?
Eu tentei fazer algo como
Time.now + 5.days
mas isso não funciona, embora eu me lembre vagamente de ter visto, e de ficar muito impressionado, por ser capaz de fazer algo como 2.years
etc.
Como faço isso no Rails 3?
Respostas:
Usar
Time.now + 10.days
ou mesmo
10.days.from_now
Ambos definitivamente funcionam. Tem certeza que está no Rails e não apenas no Ruby?
Se você definitivamente está em Rails, de onde está tentando rodar isso? Observe que o Active Support deve ser carregado.
Time.now + 10.days
sempre seleciona o fuso horário do sistema, ao passo 10.days.from_now
que seleciona o fuso horário UTC se nada estiver definido na configuração do rails.
Time.zone.now
no lugar de Time.now
.
days
, years
etc., fazem parte do Active Support. Portanto, isso não funcionará irb
, mas deveria funcionar rails console
.
require 'active_support/time'
no início da sessão ou antes de usar seus comandos
Algumas outras opções, apenas para referência
-10.days.ago
# Available in Rails 4
DateTime.now.days_ago(-10)
Apenas liste todas as opções que conheço:
[1] Time.now + 10.days
[2] 10.days.from_now
[3] -10.days.ago
[4] DateTime.now.days_ago(-10)
[5] Date.today + 10
Então agora, qual é a diferença entre eles se nos preocupamos com o fuso horário:
[1, 4]
Com fuso horário do sistema[2, 3]
Com configuração de fuso horário do seu aplicativo Rails[5]
Data apenas sem hora incluída no resultadoExperimente no Rails
Time.new + 10.days
Experimente isso em Ruby
require 'date'
DateTime.now.next_day(10).to_time