Wie kann ich die Größe oder Anzahl eines Bereichs aus Time
-Objekten bekommen?
Etwas, das dasselbe Ergebnis wie mein Pseudo-Ruby-Code erzielen würde, der nicht funktioniert:
((Time.now.end_of_day - 31.days)..(Time.now.end_of_day - 1.day)).size == 30
Aktuell ergibt das obige einen Fehler:
NoMethodError: undefined method `size' for 2012-05-18 23:59:59 -0400..2012-06-17 23:59:59 -0400:Range
und beim Versuch, es in ein Array umzuwandeln (range).to_a
:
kann nicht von Time iteriert werden
Update
Interessant, habe gerade versucht zu tun
((Date.today.end_of_day - 31.days)..(Date.today.end_of_day - 1.day)).count
Users/.../gems/ruby/1.9.1/gems/activesupport-3.0.15/lib/active_support/time_with_zone.rb:322: warning: Time#succ ist veraltet; verwenden Sie time + 1
Dennoch
((Date.today - 31.days)..(Date.today - 1.day)).count == 31
Würde das für dich auch in Ordnung sein?
Außerdem ((Date.today - 31.days)..(Date.yesterday)).count == 31
Update 2
Andererseits können wir, Mu's Hinweis folgend, auch Folgendes tun:
(((Time.now.end_of_day - 31.days)..(Time.now.end_of_day - 1.day)).first.to_date..((Time.now.end_of_day - 31.days)..(Time.now.end_of_day - 1.day)).last.to_date).count == 31