Chciałbym napisać prostą funkcję do powiedzenia w godzinach:Jak odjąć od datetime?
Ile czasu upłynęło od tego czasu?
Moje próby:
-time = DateTime.now.hour - (self.created_at.hour)
Czy ktoś wie jak to zrobić w Ruby on Rails?
Chciałbym napisać prostą funkcję do powiedzenia w godzinach:Jak odjąć od datetime?
Ile czasu upłynęło od tego czasu?
Moje próby:
-time = DateTime.now.hour - (self.created_at.hour)
Czy ktoś wie jak to zrobić w Ruby on Rails?
Szyny zwykle używa Time
nie DateTime
. Dlaczego nie zrobisz Time.now - self.created_at
? Następnie można przekonwertować z sekund na godziny, dzieląc przez 3600.
Szukasz funkcji time_ago_in_words (from_time, include_seconds = false). Oto kilka przykładów z docs:
time_ago_in_words(3.minutes.from_now) # => 3 minutes
time_ago_in_words(Time.now - 15.hours) # => 15 hours
time_ago_in_words(Time.now) # => less than a minute
from_time = Time.now - 3.days - 14.minutes - 25.seconds # => 3 days
Got it !. Najpierw musisz upewnić się, że twoje dane są w tych samych danych, które zostaną odjęte od tego, czy jest to Czas czy Data. Wybrałem czas. Następnie dzielisz go na metody wbudowane Rubiego w czasie. Przekłada się to na liczbę dni, ale może to być również 1. godzina. itp.
(Time.now - self.created_at.to_time)/1.day
To nie zadziała, ponieważ porównywane są tylko godziny, więc jeśli minie więcej niż jeden dzień, będzie to niedokładne, ale w przeciwnym razie nadal powinno być obliczone na liczbę. Zamiast tego możesz zrobić "DateTime.now - self.created_at" bezpośrednio, co da ci różnicę czasu w sekundach. Co musisz zrobić? – Karl
To nie działa, ponieważ nie można odjąć od DateTime, chyba że jest to ciąg znaków. A jeśli jest to ciąg znaków, jak wyświetlasz go ponownie? – Trip