0

DateTime次のようなオブジェクトの配列があります。

a = [
 [Tue, 05 Mar 2013],
 [Tue, 12 Mar 2013],
 [Tue, 19 Mar 2013],
 [Tue, 26 Mar 2013],
 [Tue, 02 Apr 2013],
 [Tue, 09 Apr 2013]
]

はオブジェクトですa[0]Date次のような特定の日付を検索する必要があります。

a.index('Tue, 06 Mar 2013'.to_date)

そのインデックスを見つけて、このアイテムの前 (別の場合は後) のすべてを削除します。上記の例のように、任意の日付で検索する必要Tue, 05 Mar 2013があるため、最も近い値に丸める必要があります: Tue, 05 Mar 2013。Ruby の方法でどのように行うことができますか?

4

2 に答える 2

0

方法は次のとおりです。

特定の日付を検索する必要があります。

require 'date'

a = [
 ['Tue, 05 Mar 2013'],
 ['Tue, 12 Mar 2013'],
 ['Tue, 19 Mar 2013'],
 ['Tue, 26 Mar 2013'],
 ['Tue, 02 Apr 2013'],
 ['Tue, 09 Apr 2013']
]

nwar = a.flatten.map{|d| Date.parse(d)}
# point free style is - a.flatten.map(&Date.method(:parse))
srchdt = Date.parse('Tue, 06 Mar 2013')
p nwar.index(srchdt) # => nil
srchdt = Date.parse('Tue, 26 Mar 2013')
p nwar.index(srchdt) # => 3

アイテムのインデックスを取得したら、このアイテムの前 (別のケースでは後で削除) をすべて削除する必要があります。

ind = nwar.index(srchdt) # => 3
nwar.shift(ind)
p nwar.map(&:to_s) # => ["2013-03-26", "2013-04-02", "2013-04-09"]
于 2013-09-02T13:58:38.587 に答える