Próbowałem zrobić coś takiego
Time.now + 5.days
ale to nie działa, mimo że mgliście pamiętam, że widziałem i byłem pod wielkim wrażeniem, że mogłem zrobić coś takiego 2.years
itp.
Jak to zrobić w Railsach 3?
Próbowałem zrobić coś takiego
Time.now + 5.days
ale to nie działa, mimo że mgliście pamiętam, że widziałem i byłem pod wielkim wrażeniem, że mogłem zrobić coś takiego 2.years
itp.
Jak to zrobić w Railsach 3?
Odpowiedzi:
Posługiwać się
Time.now + 10.days
lub nawet
10.days.from_now
Obie zdecydowanie działają. Czy na pewno jesteś w Railsach, a nie tylko w Rubim?
Jeśli na pewno jesteś w Railsach, skąd próbujesz to uruchomić? Pamiętaj, że należy załadować Active Support.
Time.now + 10.days
zawsze wybiera strefę czasową systemu, podczas gdy 10.days.from_now
wybierze strefę czasową UTC, jeśli nic nie jest ustawione w konfiguracji rails.
Time.zone.now
zamiast Time.now
.
days
, years
Itd, są częścią aktywnego wsparcia, więc to nie będzie działać w irb
, ale to powinno działać w rails console
.
require 'active_support/time'
na początku sesji lub przed użyciem jego poleceń
Kilka innych opcji, tylko w celach informacyjnych
-10.days.ago
# Available in Rails 4
DateTime.now.days_ago(-10)
Po prostu wymień wszystkie opcje, które znam:
[1] Time.now + 10.days
[2] 10.days.from_now
[3] -10.days.ago
[4] DateTime.now.days_ago(-10)
[5] Date.today + 10
A więc jaka jest różnica między nimi, jeśli zależy nam na strefie czasowej:
[1, 4]
Ze strefą czasową systemu[2, 3]
Z konfiguracją strefy czasowej Twojej aplikacji Rails[5]
Tylko data nie zawiera czasu w wynikuSpróbuj tego na Railsach
Time.new + 10.days
Spróbuj tego na Rubim
require 'date'
DateTime.now.next_day(10).to_time