module Silverball::DateTime
Constants
- SECONDS_PER_DAY
- SECONDS_PER_HOUR
- SECONDS_PER_MINUTE
Public Instance Methods
timespan_in_words(seconds, unit: nil, round: 2)
click to toggle source
# File lib/silverball/date_time.rb, line 9 def timespan_in_words(seconds, unit: nil, round: 2) seconds = seconds.to_f unless unit.nil? if (seconds >= SECONDS_PER_DAY && unit.nil?) || unit == :days days = seconds / SECONDS_PER_DAY seconds -= days * SECONDS_PER_DAY if unit == :days if days == days.to_i days = days.to_i else days - days.round(round) end end else days = 0 end if (seconds >= SECONDS_PER_HOUR && unit.nil?) || unit == :hours hours = seconds / SECONDS_PER_HOUR seconds -= hours * SECONDS_PER_HOUR if unit == :hours if hours == hours.to_i hours = hours.to_i else hours = hours.round(round) end end else hours = 0 end if (seconds >= SECONDS_PER_MINUTE && unit.nil?) || unit == :minutes minutes = seconds / SECONDS_PER_MINUTE seconds -= minutes * SECONDS_PER_MINUTE if unit == :minutes if minutes == minutes.to_i minutes = minutes.to_i else minutes = minutes.round(round) end end else minutes = 0 end if unit == :seconds if seconds == seconds.to_i seconds = seconds.to_i else seconds = seconds.round(round) end end if unit == :days "#{ days }d" elsif unit == :hours "#{ hours }h" elsif unit == :minutes "#{ minutes }m" else out = [] out << "#{ days }d" if days > 0 out << "#{ hours }h" if hours > 0 out << "#{ minutes }m" if minutes > 0 out << "#{ seconds }s" if seconds > 0 || (seconds == 0 && minutes == 0 && hours == 0 && days == 0) out.join(' ') end end