Time
オブジェクトで構成される範囲のサイズまたは数を取得するにはどうすればよいですか?
動作しない私の疑似 Ruby コードと同じ結果を達成するもの:
((Time.now.end_of_day - 31.days)..(Time.now.end_of_day - 1.day)).size == 30
現在上記を実行するとエラーが発生します:
NoMethodError: 2012-05-18 23:59:59 -0400..2012-06-17 23:59:59 -0400:Range の未定義のメソッド「サイズ」
そしてそれを配列に変えようとしています(range).to_a
:
時間から繰り返すことはできません
アップデート
面白い、やってみました
((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: 警告: Time#succ は廃止されました。使用時間+1
でも
((Date.today - 31.days)..(Date.today - 1.day)).count == 31
私はそれで解決しますか?
また((Date.today - 31.days)..(Date.yesterday)).count == 31
更新 2
一方、Mu のヒントを参考にすると、次のことができます。
(((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