2011-01-11 16 views
87

Ho provato a fare qualcosa di simile aCome aggiungere 10 giorni l'ora corrente a Rails

Time.now + 5.days 

ma questo non funziona, anche se vagamente ricordo di aver visto, e di essere molto colpito, con la possibilità di fare qualcosa come 2.years ecc.

Come si fa in Rails 3?

+0

Che dovrebbe funzionare. Che errore stai ottenendo? – cam

+0

aggiunto tag per activesupport – sethvargo

+0

Potrebbe funzionare sì. Dato che sei in binari, Time.zone.now sembra più appropriato – Ben

risposta

223

Usa

Time.now + 10.days 

o anche

10.days.from_now 

Entrambi sicuramente lavorare. Sei sicuro di essere in Rails e non solo in Ruby?

Se ci si trova in Rails, da dove si sta tentando di eseguirlo? Notare che il supporto attivo deve essere caricato.

+1

che ha fatto il trucco. 'irb' non eseguirà questo –

+0

@yuval funziona su rotaie e non rubino..Ti pensa di averlo ma solo per aiutare gli altri – Catmandu

+1

Questo è semplicemente fantastico. Mi piacciono alcuni Ruby e Rails. – wpp

17

days, years, ecc, sono parte integrante del sostegno attivo, quindi questo non funzionerà in irb, ma dovrebbe funzionare in rails console.

+0

yeup - spot on. non posso farlo con la vaniglia rubino. –

8

Questo funziona sicuramente e lo uso questo ovunque ho bisogno di aggiungere giorni alla data corrente:

Date.today() + 5 
4

Alcune altre opzioni, appena per riferimento

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

Basta elencare tutte le opzioni che conosco :

[1] Time.now + 10.days 
[2] 10.days.from_now 
[3] -10.days.ago 
[4] DateTime.now.days_ago(-10) 
[5] Date.today + 10 

Quindi ora, qual è la differenza tra di loro se ci interessa il fuso orario:

  • [1, 4] Con il sistema di fuso orario
  • [2, 3] Con config fuso orario dei tuoi Rails
  • [5] Data solo poco tempo inclusi nel risultato
1

Prova questo on Rails

Time.new + 10.days 

Try questo su Ruby

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

Provalo su Ruby. Restituirà una nuova data/ora il numero specificato di giorni in futuro

DateTime.now.days_since(10) 
Problemi correlati