Hi All
I’ve spent some time trying to find what I thought would be a simple
solution, but so far I’ve failed
Simply put; I want to pick a start date and end date with a format of
“01-jan-2006”. Then increment by one day the date until it reaches the
end
date. For example:
01-jan-2006
02-jan-2006
03-jan-2006
04-jan-2006
However it also needs to clock onto the next month - I’m hoping the
class
can do this without any special code? So when it hits say “28-feb-2006”
the
next increment will be “01-mar-2006”.
This is probably incredibly simple and I’ve looked on Google and the
Pickaxe
book is on my lap as I type this but I’m just not seeing the answer.
Many thanks for any help.
All the best.
Doug
Always happens doesn’t it!!
As soon as you post for help you find the answer.
If you have a better way then I’d love to still hear it but this is what
I
found:
begin_date = Date.new(2006, 1, 1)
end_date = Date.new(2006, 5, 1)
begin_date.step(end_date, 1) { |myDate|
Do something with myDate
puts myDate.to_s
}
Gives me the incremental date (recognising month ends) all the way to
the
end.
Thanks everyone.
Hi,
I think you will find what you need in the Date class.
Bill Stevens
Doug B. wrote:
Hi All
I’ve spent some time trying to find what I thought would be a simple
solution, but so far I’ve failed
Simply put; I want to pick a start date and end date with a format of
“01-jan-2006”. Then increment by one day the date until it reaches the
end
date. For example:
01-jan-2006
02-jan-2006
03-jan-2006
04-jan-2006
However it also needs to clock onto the next month - I’m hoping the
class
can do this without any special code? So when it hits say “28-feb-2006”
the
next increment will be “01-mar-2006”.
This is probably incredibly simple and I’ve looked on Google and the
Pickaxe
book is on my lap as I type this but I’m just not seeing the answer.
Many thanks for any help.
All the best.
Doug
Hi Doug,
using a range might be clearer:
begin_date = Date.parse(‘01-jan-2006’)
end_date = Date.parse(‘18-mar-2006’)
(begin_date…end_date).each {|date| puts date.strftime(‘%d-%b-%Y’)}
Regards,
Trevor
Trevor S.
http://somethinglearned.com
On May 3, 2006, at 9:48 PM, Doug B. wrote:
}
require ‘date’
date_range = Date.new(2006, 1, 1)…Date.new(2006, 5, 1)
date_range.each { |day| … }
date_range.to_a # => […dates…]
– Daniel
Absolutely fantastic. Thanks everyone - you’ve been a great help.