Forum: Ruby on Rails Date Range Between Two Dates - NEED HELP

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Shankar G. (Guest)
on 2009-02-04 07:55
hi,

   I've two dates say

  input for example.,
   date1 = '2009-01-02';
   date2 = '2009-01-10';

   Need to find date range array between date1 and date2.

 output for example.,
     Array{
     [0]=>'2009-01-02',
     [1]=>'2009-01-03',
     [2]=>'2009-01-04',
     [3]=>'2009-01-05',
     [4]=>'2009-01-06',
     [5]=>'2009-01-07',
     [6]=>'2009-01-08',
     [7]=>'2009-01-09',
     [8]=>'2009-01-10'
     )
Thanks in advance
Shankar.
Darrik Mazey (Guest)
on 2009-02-04 08:07
(Received via mailing list)
Shankar G. wrote:
> hi,

Hello.

>      Array{
> Thanks in advance
> Shankar.

I'm not entirely clear on what you're looking for.  If you already have
this data in an array, I suggest using select {}.  I.e.

data.select {|x| x >= date1 and x<= date2 }

If you're trying to fetch the data, perhaps you're looking for
conditions.  I.e.

conditions = [ 'date_column > ? AND date_column < ?', date1, date2 ]

Hope that helps.

Cheers,
Darrik

--
Darrik Mazey
Developer
DMT Programming, LLC.
P.O. Box 91
Torrington, CT 06790
office: 330.983.9941
    fax: 330.983.9942
mobile: 330.808.2025
removed_email_address@domain.invalid

To obtain my public key, send an email to
removed_email_address@domain.invalid.
Julian L. (Guest)
on 2009-02-04 08:08
(Received via mailing list)
You can use Date ranges. If you have strings, you'll need to Parsedate
them into dates first. String ranges won't understand date overflow
(ie how many days in a month, months in a year etc.).

((1.year.ago.to_date)..(Date.today)).to_a.map{|x| x.to_s(:db)}

Julian
Shankar G. (Guest)
on 2009-02-04 08:23
Julian L. wrote:
> You can use Date ranges. If you have strings, you'll need to Parsedate
> them into dates first. String ranges won't understand date overflow
> (ie how many days in a month, months in a year etc.).
>
> ((1.year.ago.to_date)..(Date.today)).to_a.map{|x| x.to_s(:db)}
>
> Julian

Thanks for your HELP.
can you explain with example Julian ?
Julian L. (Guest)
on 2009-02-04 09:19
(Received via mailing list)
What do you mean?

Blog: http://random8.zenunit.com/
Learn rails: http://sensei.zenunit.com/

On 04/02/2009, at 5:23 PM, Shankar G.
<removed_email_address@domain.invalid
Rob B. (Guest)
on 2009-02-04 17:54
(Received via mailing list)
On Feb 4, 2009, at 12:55 AM, Shankar G. wrote:
> output for example.,
>     )
> Thanks in advance
> Shankar.


>
> ((1.year.ago.to_date)..(Date.today)).to_a.map{|x| x.to_s(:db)}
>
> Julian

Julian gave you almost everything.  Are you asking about "Parsedate"?

Try this:

require 'date'
date1 = Date.parse('2009-01-02')
date2 = Date.parse('2009-01-10')
(date1..date2).to_a

irb> puts (date1..date2).to_a
2009-01-02
2009-01-03
2009-01-04
2009-01-05
2009-01-06
2009-01-07
2009-01-08
2009-01-09
2009-01-10
=> nil

Or to make it even more clear, try 2009-02-25 to 2009-03-05

irb> puts (Date.parse('2009-02-25')..Date.parse('2009-03-05')).to_a
2009-02-25
2009-02-26
2009-02-27
2009-02-28
2009-03-01
2009-03-02
2009-03-03
2009-03-04
2009-03-05
=> nil

-Rob

Rob B.    http://agileconsultingllc.com
removed_email_address@domain.invalid
This topic is locked and can not be replied to.