distance_of_time_in_words(from_time, to_time = 0, include_seconds = false) public

Reports the approximate distance in time between two Time or Date objects or integers as seconds. Set include_seconds to true if you want more detailed approximations when distance < 1 min, 29 secs Distances are reported based on the following table:

  0 <-> 29 secs                                                             # => less than a minute
  30 secs <-> 1 min, 29 secs                                                # => 1 minute
  1 min, 30 secs <-> 44 mins, 29 secs                                       # => [2..44] minutes
  44 mins, 30 secs <-> 89 mins, 29 secs                                     # => about 1 hour
  89 mins, 29 secs <-> 23 hrs, 59 mins, 29 secs                             # => about [2..24] hours
  23 hrs, 59 mins, 29 secs <-> 47 hrs, 59 mins, 29 secs                     # => 1 day
  47 hrs, 59 mins, 29 secs <-> 29 days, 23 hrs, 59 mins, 29 secs            # => [2..29] days
  29 days, 23 hrs, 59 mins, 30 secs <-> 59 days, 23 hrs, 59 mins, 29 secs   # => about 1 month
  59 days, 23 hrs, 59 mins, 30 secs <-> 1 yr minus 1 sec                    # => [2..12] months
  1 yr <-> 2 yrs minus 1 secs                                               # => about 1 year
  2 yrs <-> max time or date                                                # => over [2..X] years

With include_seconds = true and the difference < 1 minute 29 seconds:

  0-4   secs      # => less than 5 seconds
  5-9   secs      # => less than 10 seconds
  10-19 secs      # => less than 20 seconds
  20-39 secs      # => half a minute
  40-59 secs      # => less than a minute
  60-89 secs      # => 1 minute

Examples

  from_time = Time.now
  distance_of_time_in_words(from_time, from_time + 50.minutes)        # => about 1 hour
  distance_of_time_in_words(from_time, 50.minutes.from_now)           # => about 1 hour
  distance_of_time_in_words(from_time, from_time + 15.seconds)        # => less than a minute
  distance_of_time_in_words(from_time, from_time + 15.seconds, true)  # => less than 20 seconds
  distance_of_time_in_words(from_time, 3.years.from_now)              # => over 3 years
  distance_of_time_in_words(from_time, from_time + 60.hours)          # => about 3 days
  distance_of_time_in_words(from_time, from_time + 45.seconds, true)  # => less than a minute
  distance_of_time_in_words(from_time, from_time - 45.seconds, true)  # => less than a minute
  distance_of_time_in_words(from_time, 76.seconds.from_now)           # => 1 minute
  distance_of_time_in_words(from_time, from_time + 1.year + 3.days)   # => about 1 year
  distance_of_time_in_words(from_time, from_time + 4.years + 15.days + 30.minutes + 5.seconds) # => over 4 years

  to_time = Time.now + 6.years + 19.days
  distance_of_time_in_words(from_time, to_time, true)     # => over 6 years
  distance_of_time_in_words(to_time, from_time, true)     # => over 6 years
  distance_of_time_in_words(Time.now, Time.now)           # => less than a minute
Show source
Register or log in to add new notes.
September 27, 2010
0 thanks

Nice german translation independet of structure of a sentence

Eine pragmatische Lösung für das Übersetzungsproblem der Rails Methode distance_of_time_in_words(). Im Deutschen wird je nach Satzbau eine andere Ausgabe benötigt.

Vor mehr als 5 Monaten“/”Vor etwa einem Jahr“ — statt wie im Original ”Dauer: mehr als 5 Monate“/”Dauer: etwa 1 Jahr

http://gist.github.com/598965