【ruby】2つのtimeをn分ごとや1時間ごとにeachする

投稿者:

こういう時間があるときに30分ごとに処理したいなーってときがありますよね

a = Time.parse('2021-01-01 13:00')
b = Time.parse('2021-01-01 18:00')

# NG こんなのあったらいいな 
(a..b).each_hour

こんな風にした

細かい事は調整してねん

require 'time'


a = Time.parse('2021-01-01 13:00')
b = Time.parse('2021-01-01 18:00')


def each_time(start_time, end_time, interval_second)
    current_time = start_time.clone
    ((end_time - start_time) / interval_second).to_i.times {
        yield current_time
        current_time += interval_second
    }
end


p 'each 30min'
each_time(a, b, 1800) {|current_time|
    p current_time.strftime '%H:%M'
}

p 'each 1hour'
each_time(a, b, 3600) {|current_time|
    p current_time.strftime '%H:%M'
}

出力はこんなかんじ

"each 30min"
 "13:00"
 "13:30"
 "14:00"
 "14:30"
 "15:00"
 "15:30"
 "16:00"
 "16:30"
 "17:00"
 "17:30"
 "each 1hour"
 "13:00"
 "14:00"
 "15:00"
 "16:00"
 "17:00"

いかがでしたか???????????

babu
babu

この記事がいいとおもったら僕と一緒に踊りませんか・・・?

別にいいやり方があったら教えてくださいtwitterとかで、

パーフェクト Ruby on Rails 【増補改訂版】

新品価格
¥3,637から
(2022/3/18 20:14時点)