%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]