Jak policzyć liczbę dni między tymi dwiema datami?
start_date = Date.parse "2012-03-02 14:46:21 +0100"
end_date = Date.parse "2012-04-02 14:46:21 +0200"
Za pomocą klas Date (i DateTime) możesz (end_date - start_date).to_i
uzyskać różnicę w liczbie dni.
Time
obiekty zwracają jednak sekundy.Time
obiektów, a nieDate
obiektów. Może mógłbyś zaktualizować nazewnictwo w swoim komentarzu, aby odzwierciedlić, że nie są to daty?Zakładając, że
end_date
istart_date
oba są klasąActiveSupport::TimeWithZone
w Railsach, możesz użyć:źródło
(Time.zone.now.to_date - 23.hours.ago.to_date).to_i
, daje 1 i powinno być 0Time.zone.now.to_date
zwraca „Wed, 15 Nov 2017”, a23.hours.ago.to_date
zwraca „Tue, 14 Nov 2017”. Różnica w liczbie dni wynosi i powinna wynosić 1, chyba że uruchomiłeś kod na godzinę przed północą.Railsy mają wbudowanych pomocników, które mogą rozwiązać ten problem. Należy pamiętać, że jest to część pomocników Actionview, więc nie będą one dostępne bezpośrednio z konsoli.
Spróbuj tego
źródło
Otrzymywałem wyniki w ciągu kilku sekund, więc to zadziałało:
źródło
1.day
nie jestruby
zgodne z żądaniem OP (w tagach). Jest toRails
lub bardziej szczegółowe,active support
chociażcreated_at
jest w zasadzieModel
metodą wRails
tak ..aby uzyskać liczbę dni w zakresie czasowym (tylko liczba wszystkich dni)
aby uzyskać liczbę dni między dwiema datami
źródło
Żadna z poprzednich odpowiedzi (do tej pory) nie podaje prawidłowej różnicy w dniach między dwiema datami.
Ten, który jest najbliżej, jest godny . Pełna odpowiedź przekształciłaby,
to_i
a następnie podzieliłaby:W konkretnym przykładzie pytania nie należy analizować,
Date
czy upływający czas jest istotny. UżyjTime.parse
zamiast tego.źródło
Aby mieć liczbę pełnych dni między dwiema datami (
DateTime
obiektami):źródło
Aby uzyskać różnicę w liczbie dni w dwóch datach:
źródło
źródło