Intersect zwischen zwei datum-ranges


#1

Hi,
ich hab da nen kleines Problem:
ich habe zwei ranges von Daten(objekten, gleiches format), zum beispiel
1.10.2008 und 20.10.2008 und 5.10.2008 und 7.10.2008. ich möchte die
beiden ranges über to_a oder anders miteinander “intersecten”. Hat
jemand eine Praktikable Lösung dafür? Ich sitze hier schon seid einem
Tag dran. Ich scheiter schon daran, eine Range aus daten in ein Array
zu überführen.
exemplarisch:
(e.Eventstart.send(:to_datetime)…e.Eventend.send(:to_datetime)).each do
|d|
@s_one<< d
end
wenn ich jetzt statt d “d” in das array schreibe, kommt auch die
richtige anzahl von tagen raus… aber rails stellt sich quer das datum,
egal ob mit stringkonvertierung oder ohne, in das array zu schreiben.
lg Markus


#2

Hi Markus,
ist dies was Du suchst?

ruby script/console
Loading development environment (Rails 2.1.0)

first_range = (Date.new(2008, 10, 1)…Date.new(2008, 10, 20))
=> Wed, 01 Oct 2008…Mon, 20 Oct 2008

second_range = (Date.new(2008, 10, 5)…Date.new(2008, 10, 7))
=> Sun, 05 Oct 2008…Tue, 07 Oct 2008

intersection = first_range.to_a & second_range.to_a
=> [Sun, 05 Oct 2008, Mon, 06 Oct 2008, Tue, 07 Oct 2008]

second_range = (Date.new(2008, 10, 19)…Date.new(2008, 10, 25))
=> Sun, 19 Oct 2008…Sat, 25 Oct 2008

intersection = first_range.to_a & second_range.to_a
=> [Sun, 19 Oct 2008, Mon, 20 Oct 2008]

Besten Gruß

Jan

2008/10/4 Markus K. removed_email_address@domain.invalid

  @s_one<< d


Jan P.
Rechtsanwalt

Babendiekstraße 60 B
22587 Hamburg
Tel +49 (0)40 41265809 Fax +49 (0)40 380178-73022
Mobil +49 (0)171 3516667


#3

ich probier gleich mal aus, ob das so läuft, danke schon mal vorweg!
lg markus

Jan P. schrieb: