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
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
Here’s how you can convert
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"