From: Robert Klemme Date: 2012-10-06T19:06:03+09:00 Subject: Re: Ruby range - verify if date lies between two specified dates On Sat, Oct 6, 2012 at 2:43 AM, Todd Benson wrote: >>> >>> first_date = Date.new(2012, 10, 1) >>> last_date = Date.new(2012, 10, 31) >>> range = (first_date..last_date) >>> range.include?(Date.new(2012, 10, 5)) >>> => true >>> range.include?(Date.new(2012, 11, 1)) >>> => false > Ranges can't go backwards. Do... range = (seven..today) There is also an approach which does not need ranges: irb(main):001:0> d = 3.times.map {sleep 1; Time.now} => [2012-10-06 11:56:34 +0200, 2012-10-06 11:56:35 +0200, 2012-10-06 11:56:36 +0200] irb(main):002:0> d[1].between? d[0], d[1] => true irb(main):003:0> d[1].between? d[0], d[2] => true irb(main):004:0> d[0].between? d[1], d[2] => false With Date irb(main):005:0> require 'date' => true irb(main):006:0> d = 3.times.map {|i| Date.today + i} => [#, #, #] irb(main):007:0> puts d 2012-10-06 2012-10-07 2012-10-08 => nil irb(main):008:0> d[1].between? d[0], d[2] => true irb(main):009:0> d[0].between? d[1], d[1] => false irb(main):010:0> d[0].between? d[0], d[1] => true irb(main):011:0> d[0].between? d[1], d[2] => false irb(main):012:0> d[1].between? d[0], d[1] => true This is for inclusive ranges. If you want to exclude either bound just use a date +/- 1. Kind regards robert -- remember.guy do |as, often| as.you_can - without end http://blog.rubybestpractices.com/