Wie zähle ich die Anzahl der Tage zwischen diesen beiden Daten?
start_date = Date.parse "2012-03-02 14:46:21 +0100"
end_date = Date.parse "2012-04-02 14:46:21 +0200"
Mit den Klassen Date (und DateTime) können Sie (end_date - start_date).to_i
die Differenz der Anzahl der Tage ermitteln.
Time
Objekte geben jedoch Sekunden zurück.Time
Objekte bezieht , nicht aufDate
Objekte. Vielleicht könnten Sie die Benennung in Ihrem Kommentar aktualisieren, um anzuzeigen, dass es sich nicht um Daten handelt?Unter der Annahme , dass
end_date
undstart_date
sind beide KlasseActiveSupport::TimeWithZone
in Rails, dann können Sie verwenden:quelle
(Time.zone.now.to_date - 23.hours.ago.to_date).to_i
, es gibt 1 und sollte 0 seinTime.zone.now.to_date
"Mi, 15. November 2017" und23.hours.ago.to_date
"Di, 14. November 2017" zurückgegeben. Der Unterschied in der Anzahl der Tage ist und sollte 1 sein, es sei denn, Sie haben Ihren Code in der Stunde vor Mitternacht ausgeführt.Rails hat einige eingebaute Helfer , die dies für Sie lösen könnten. Beachten Sie, dass dies Teil der Actionview-Helfer ist und daher nicht direkt über die Konsole verfügbar ist.
Versuche dies
quelle
Ich habe in Sekundenschnelle Ergebnisse erzielt, also hat das bei mir funktioniert:
quelle
1.day
ist nichtruby
wie OP angefordert (in Tags). Es istRails
noch spezifischereactive support
obwohlcreated_at
ist im Grunde einModel
Verfahren inRails
so ..um die Anzahl der Tage in einem Zeitbereich zu erhalten (nur eine Zählung aller Tage)
um die Anzahl der Tage zwischen 2 Daten zu erhalten
quelle
Keine der vorherigen Antworten (bis zu diesem Datum) gibt den korrekten Unterschied in Tagen zwischen zwei Daten an.
Derjenige , der am nächsten kommt, ist von diesem Dankent . Eine vollständige Antwort würde konvertieren
to_i
und dann teilen:Im konkreten Beispiel der Frage sollte nicht analysiert werden,
Date
ob die verstrichene Zeit relevant ist. Verwenden SieTime.parse
stattdessen.quelle
So haben Sie die Anzahl der ganzen Tage zwischen zwei Daten (
DateTime
Objekten):quelle
So ermitteln Sie die Anzahl der Tage zwischen zwei Daten:
quelle
quelle