Rounding Time in Increments
I Recently needed to round down a time in certain increments. This is not something I've ever been asked to do previously so it was an interesting problem to figure out. The resulting formula is simple:
TIME_MIN - (TIME_MIN % INCREMENT)
This will give you the previous incremental minute. ex: Given a 5 minute increment @ 3:12, the result would be 10.
time = Time.now
new_min = time.min - (time.min % 5)
I happen to be solving this in a project with ActiveSupport
so there was access to Time#change
so I finished this up with:
time.change(min: new_min)
Tweet