On Sat, Oct 6, 2012 at 2:43 AM, Todd Benson <[email protected]> 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}
=> [#<Date: 2012-10-06 ((2456207j,0s,0n),+0s,2299161j)>, #<Date:
2012-10-07 ((2456208j,0s,0n),+0s,2299161j)>, #<Date: 2012-10-08
((2456209j,0s,0n),+0s,2299161j)>]
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/

-- You received this message because you are subscribed to the Google Groups 
ruby-talk-google group. To post to this group, send email to 
[email protected]. To unsubscribe from this group, send email 
to [email protected]. For more options, visit this 
group at https://groups.google.com/d/forum/ruby-talk-google?hl=en

Reply via email to