Convert integer to time (hh:mm:ss)
Usually when you want to store a time
field I recommend not storing time, but instead using a datetime
field.
That way you won’t encounter many unexpected problems.
But if you do have to store time like 19:30:00
, you might as well store it in integer
.
Here’s how you can convert integer
to hh:mm:ss
For example, follow along to see how to convert 54,234 seconds to hours, minutes, and seconds.
THE SHORT WAY #
def seconds_to_time(seconds)
# t = 236 # seconds
Time.at(seconds).utc.strftime('%H:%M:%S')
# => "00:03:56"
end
def time_to_seconds(time)
# t = '00:03:56'
h = time.split(':').first.to_f
m = time.split(':').second.to_f
s = time.split(':').third.to_f
tts = (h * 60 * 60) + (m * 60) + s
tts.to_i
# => 236
end
THE LONG WAY #
# First, find the number of whole hours
now = 54234
hours = now / 3600
# => 15
# Find the number of whole minutes
raw_hours = now / 3600.to_f
# => 15.065
raw_minutes = raw_hours - hours
# => 0.0649
full_minutes = raw_minutes * 60
# => 3.89
minutes = full_minutes.to_i
# => 3
# Find the remaining seconds
raw_seconds = full_minutes - minutes
# => 0.89
seconds = (raw_seconds * 60).round
# => 54
# Finish up by rewriting as HH:MM:SS
time = [hours, minutes, seconds].join(':')
# => "15:3:54"
That’s it!
Did you like this article? Did it save you some time?