Have you ever wanted something like
distance_of_time_in_words that gave the precise amount of a time duration instead of just a round approximation like
'over 3 years'?
duration = 3500.seconds duration.human_str # => '58m 20s' duration.human_str(delimiter: '') # => '58m20s' duration.human_str(separator: ' ') # => '58 m 20 s' duration.human_str(delimiter: ', ', separator: ' ') # => '58 m, 20 s' duration = ActiveSupport::Duration.parse "P3Y6M4DT12H30M5S" # => 3 years, 6 months, 4 days, 12 hours, 30 minutes, and 5 seconds duration.human_str # => "3y 6m 4d 12h 30m 5s" (duration - 4.days).human_str # => "3y 6m 12h 30m 5s" duration.human_str(delimiter: ', ') # => "3y, 6m, 4d, 12h, 30m, 5s"
distance_of_time_in_wordshelper but exact rather than approximate
distance_of_time_in_wordsis somewhat configurable but only gives an approximation (
'over 3 years'), with no option to print the exact number of each units.
#inspectbut more concise and configurable.
#inspectis long (
'3 years, 6 months, 4 days, 12 hours, 30 minutes, and 5 seconds') and not
at all configurable.
#iso8601but more human readable rather than machine readable.
#iso8601is concise and machine-readable, but not very human-readable (
#to_s, which is very concise (
'110839937') but not at all human-readable for large durations