我如何能够获得由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
用户/.../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