Jak dodać minuty do obiektu Time

79

W Rubim, jak to zrobić Time.now + 10.hours ?

Czy istnieje odpowiednik dla secsi mins? Na przykład:

Time.now + 15.mins
keruilin
źródło
1
To nie działa w drugą stronę 10 + Time.now:: TypeError: Time can't be coerced into Fixnumale Time.now + 10działa .. dla wszystkich, którzy mają ten sam problem;)
Yo Ludke

Odpowiedzi:

144

Ruby (język programowania) nie ma 10.hours, jest to ActiveSupportczęść Ruby on Rails (framework sieciowy). I tak, ma oba minutesi secondsmetody.

Jednak Time#+(metoda + w wystąpieniach Time) zwraca nowe wystąpienie Time, czyli tyle sekund w przyszłości. Więc bez cukru Ruby on Rails możesz po prostu zrobić:

irb> t = Time.now
#=> 2011-08-03 22:35:01 -0600

irb> t2 = t + 10               # 10 Seconds
#=> 2011-08-03 22:35:11 -0600

irb> t3 = t + 10*60            # 10 minutes
#=> 2011-08-03 22:45:01 -0600

irb> t4 = t + 10*60*60         # 10 hours
#=> 2011-08-04 08:35:01 -0600
Phrogz
źródło
@NailsonLandim, możesz również uznać Timerizer za przydatny. „Składnia czasu Railsów bez Railsów”.
Jeff Dickey
Odpowiednią częścią dokumentacji rozszerzeń rdzenia jest guide.rubyonrails.org/ ... i kolejne dwie sekcje.
The Tin Man
77

Jeśli korzystasz z ActiveSupport, szukasz pełnej wersji .minutesi .seconds.

Time.now + 10.minutes
Time.now + 10.seconds
twe4ked
źródło
20

Również w ActiveSupport możesz:

10.minutes.from_now

10.minutes.ago
mahi-man
źródło
1

Obiekt czasu

time = Time.now

Dodawanie minut do obiektu czasu:

time + 5.minutes

Sushant
źródło