Como adicionar 10 dias ao tempo atual no Rails


106

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?


Isso deve funcionar. que erro você está tendo?
— câmera de

Deve funcionar, sim. Como você está no trilho, Time.zone.now parece mais apropriado
— Ben

Respostas:


284

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.


@yuval funciona em trilhos e não em ruby ​​.. Pense que você conseguiu, mas apenas para ajudar os outros
— Catmandu

1
Isso é simplesmente fantástico. Eu amo alguns Ruby e Rails.
— wpp

5
Existe uma diferença sutil. 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.
— Babistalikesflyingonrails

Geralmente, é melhor usar Time.zone.nowno lugar de Time.now.
— x-yuri

21

days, yearsetc., fazem parte do Active Support. Portanto, isso não funcionará irb, mas deveria funcionar rails console.


sim - local. não posso fazer isso em rubi de baunilha.
— Yuval Karmi

1
Funciona no irb também. Se você tiver o gem instalado, basta fazer um require 'active_support/time'no início da sessão ou antes de usar seus comandos
— darkdefender27

10

Isso definitivamente funciona e eu uso isso sempre que preciso adicionar dias à data atual:

Date.today() + 5

10

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 resultado

4

Experimente no Rails

Time.new + 10.days 

Experimente isso em Ruby

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

2

Experimente isso em Ruby. Ele retornará uma nova data / hora no número especificado de dias no futuro

DateTime.now.days_since(10)
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.