0

年と一緒にすべての週番号をリストしたい。これは私が持っているものです:

start # 2012-05-10
ende # 2013-06-20

while start < ende
   weeks << start.cweek
   start += 1.week
end

すべての週番号をリストします。

@kws.each do |w|
    w 
end

対応する年を各週番号に割り当てる方法にインスピレーションが必要です..22 / 2012 23 / 2012などを取得する..

手伝ってくれてありがとう..

4

2 に答える 2

0

hash代わりにkeyasyearvalueasを作成しますarray of week numbers

start # 2012-05-10
ende # 2013-06-20
weeks ={}
while start < ende
   weeks[start.year] = [] unless weeks[start.year]
   weeks[start.year] << start.cweek
   start += 1.week
end

p weeks

そしてあなたはo/pを得る

 => {2012=>[19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 
 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52], 
2013=>[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21,
22, 23, 24]} 
于 2012-10-12T07:41:11.913 に答える
0

while ループでは、年を格納することもできます。簡単な方法の 1 つは、配列の配列として保存することです。

次に、後で each ループで両方にアクセスできます。

start = Date.new( 2012, 5, 10 )
ende = Date.new( 2013, 6, 20 )

weeks = []
while start < ende
  weeks << [start.cweek, start.year]  # <-- enhanced
  start += 1.week
end

weeks.each do |w,y|   # <-- take two arguments in the block
  puts "#{w} / #{y}"  #     and print them both out
end

結果:

=> 
19 / 2012
20 / 2012
21 / 2012
22 / 2012
23 / 2012
24 / 2012
25 / 2012
...
22 / 2013
23 / 2013
24 / 2013
于 2012-10-12T08:22:44.637 に答える