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.yearsetc.
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.yearsetc.
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.dayssempre seleciona o fuso horário do sistema, ao passo 10.days.from_nowque seleciona o fuso horário UTC se nada estiver definido na configuração do rails.
Time.zone.nowno lugar de Time.now.
days, yearsetc., 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