ネギのメモ帳

Twitterに書ききれないことをたまに書いたりするかもしれないスペース

Rubyで同じ曜日の日付を何週分も生成する

ほとんど自分用メモの不定Rubyプログラムコーナー.

require "time"

### User variables ###
date = "2012/06/27"
style = '%Y.%m.%d'
n = 13
######################

t0 = Time.parse(date)

array = Array.new
t = Time.new
(0..(n-1)).each do |i|
  t = t0 - 7*i*86400
  array << t.strftime(style)
end

array.sort!
l = n.to_s.split(//).size

(1..array.length).each do |j|
  print array[j-1]
  print sprintf(" %0#{l}d", j)
  print "\n"
end


出力例(2012年春の水曜日1クール分)

2012.04.04 01
2012.04.11 02
2012.04.18 03
2012.04.25 04
2012.05.02 05
2012.05.09 06
2012.05.16 07
2012.05.23 08
2012.05.30 09
2012.06.06 10
2012.06.13 11
2012.06.20 12
2012.06.27 13


Time.parseが読める書式で日付を指定して,
そこから遡ることn週分の日付を生成して,
指定した書式(Time#strftime)にしたがって昇順に書き出す.
ついでに, 最も古い日付を第1回として
対応する回数を日付の横に書き出す.
雑な書き出しだけど矩形選択の出来る
エディタにでも渡してやればいいかなって.


回数はnの10進桁数に応じて左に0が補完される.
logでも使って数えようかと思っていたところ,
文字列の長さをカウントする簡単な方法があったので
それを用いている.