我赞同@Steve 的回答,但想指出您可以使用 Ruby 有点晦涩的flip-flop operator。
下面,arr 是您示例中的哈希数组。
require 'date'
h = arr.each_with_object({}) { |g,h| h[Date.strptime(g["Date"], '%d/%m/%Y')] = g }
#=> {#<Date: 2016-01-01 ((2457389j,0s,0n),+0s,2299161j)>=>
# {"Date"=>"01/01/2016", "Total"=>10},
# #<Date: 2016-01-02 ((2457390j,0s,0n),+0s,2299161j)>=>
# {"Date"=>"02/01/2016", "Total"=>20},
# #<Date: 2016-01-03 ((2457391j,0s,0n),+0s,2299161j)>=>
# {"Date"=>"03/01/2016", "Total"=>30},
# #<Date: 2016-01-04 ((2457392j,0s,0n),+0s,2299161j)>=>
# {"Date"=>"04/01/2016", "Total"=>40},
# #<Date: 2016-01-05 ((2457393j,0s,0n),+0s,2299161j)>=>
# {"Date"=>"05/01/2016", "Total"=>50}}
range = Date.strptime('02/01/2016', '%d/%m/%Y')..Date.strptime('04/01/2016', '%d/%m/%Y')
#=> #<Date: 2016-01-02 ((2457390j,0s,0n),+0s,2299161j)>..
# #<Date: 2016-01-04 ((2457392j,0s,0n),+0s,2299161j)>
触发器运算符用于确定落在给定范围内的键:
keeper_keys = h.keys.sort.select { |d| range.include?(d) .. true ? true : false }
#=> [#<Date: 2016-01-02 ((2457390j,0s,0n),+0s,2299161j)>,
# #<Date: 2016-01-03 ((2457391j,0s,0n),+0s,2299161j)>,
# #<Date: 2016-01-04 ((2457392j,0s,0n),+0s,2299161j)>]
h.select { |k,_| keeper_keys.include?(k) }.values
#=> [{"Date"=>"02/01/2016", "Total"=>20},
# {"Date"=>"03/01/2016", "Total"=>30},
# {"Date"=>"04/01/2016", "Total"=>40}]