Skip to content

Instantly share code, notes, and snippets.

@ixti
Created February 18, 2016 18:48
Show Gist options
  • Select an option

  • Save ixti/82bab0edc6caf8a6c4a3 to your computer and use it in GitHub Desktop.

Select an option

Save ixti/82bab0edc6caf8a6c4a3 to your computer and use it in GitHub Desktop.
TimeSpan formatter
class TimeSpan
MINUTE = 60
HOUR = 60 * MINUTE
DAY = 24 * HOUR
def initialize(time)
@span = time.to_i
end
def days
@days ||= @span / DAY
end
def hours
@hours ||= (@span - @days * DAY) / HOUR
end
def minutes
@minutes = (@span - @days * DAY - @hours * HOUR) / MINUTE
end
def seconds
@seconds ||= @span - @days * DAY - @hours * HOUR - @minutes * MINUTE
end
def to_s
parts = []
parts << format(days, "day") if 0 < days
parts << format(hours, "hour") if 0 < hours
parts << format(minutes, "minute") if 0 < minutes
parts << format(seconds, "second") if 0 < seconds
parts.join " "
end
def self.humanize(seconds)
new(seconds).to_s
end
private
def format(value, unit)
"#{value} #{unit}#{'s' unless 1 == value}"
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment