Rubyで特定の時間刻みの配列を取得する

%Y%m%d%H%M形式の日付を与えて、開始日時と終了日時の間を特定の時間刻みで区切った配列を返すスクリプトRubyで書きました。while文は滅多に使わないのでちょっと新鮮です。今回は10分刻みを例として書いてみました。もちろん、5分刻みとかもできます。それも引数で与えられるようにしてやればよいのかもしれませんが、今はハードコーディングでご容赦。

require 'time'
module Define
  module_function
  def getlist(sdate,edate)
    dfmt = "%Y%m%d%H%M"
    st = Time.strptime(sdate,dfmt)
    et = Time.strptime(edate,dfmt)
    tt = st
    ary = Array.new
    ary.push(st.strftime(dfmt))
    while(tt < et) do
      tt = st+10*60
      ary.push(tt.strftime(dfmt))
      st = tt
    end
    return ary
  end
end
if __FILE__ == $0 then
  sdate = "202207132100"
  edate = "202207132200"
  tlist = Define::getlist(sdate,edate)
  for date in tlist
    puts date
  end
end

これを実行すると以下のように返ってきます。

$ ruby main.rb
202207132100
202207132110
202207132120
202207132130
202207132140
202207132150
202207132200

Rubyのバージョンは以下のとおり。

$ ruby -v
ruby 2.7.4p191 (2021-07-07 revision a21a3b7d23) [x86_64-linux-gnu]