-2

Rubyに2つの日付範囲の間のすべての日付範囲を見つける簡単な方法があるかどうか知りたいです。私は2つの日付配列を持っています:January 01, 08:00そしてJanuary 01, 12:001つの配列とJanuary 01, 09:00 to January 01, 10:00別の配列に。次のような配列を返したい:

January 1, 08:00 to January 1, 09:00

と:

January 1, 10:00 to January 1, 12:00
4

1 に答える 1

2

これはそれを行う1つの方法です:

date_array_1, date_array_2 = [
  'January 01, 08:00', 'January 01, 12:00',
  'January 01, 09:00', 'January 01, 10:00'
].map{ |s| DateTime.parse(s) }.each_slice(2).to_a

これにより、日付の2つの配列が設定されます。

require 'date'

def date_ranges(ary1, ary2)
  [
    ary1,
    ary2
  ].flatten.sort.each_slice(2).map{ |s| s.first .. s.last }
end

puts date_ranges(date_array_1, date_array_2)

どの出力:

2013-01-01T08:00:00+00:00..2013-01-01T09:00:00+00:00
2013-01-01T10:00:00+00:00..2013-01-01T12:00:00+00:00

date_array_2を日付の配列にしたい場合は?簡単ですか?like date_array_1 = ['January 01、08:00'、'January 01、13:00'] date_array_2 = [['January 01、09:00'、'January 01、10:00']、['January 01、 11:00'、'1月1日12:00']]

2つの日付配列は次のようになります。

date_array_1 = ['January 01, 08:00', 'January 01, 12:00']
date_array_2 = ['January 01, 09:00', 'January 01, 10:00']

それらをDateTimeオブジェクトに強制変換します。

[ date_array_1, date_array_2 ].map{ |a| a.map!{ |d| DateTime.parse(d) } }
于 2013-01-27T09:04:23.203 に答える