Вы можете взглянуть на модуль Time :: Ago на CPAN (я автор). Это Perl-порт помощника time_ago_in_words () из Rails.
Учитывая длительность, она возвращает приближенную читаемую строку. Из документации Rails:
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, 30 secs 23 hrs, 59 mins, 29 secs
about [2..24] hours
23 hrs, 59 mins, 30 secs 41 hrs, 59 mins, 29 secs
1 day
41 hrs, 59 mins, 30 secs 29 days, 23 hrs, 59 mins, 29 secs
[2..29] days
29 days, 23 hrs, 59 mins, 30 secs 44 days, 23 hrs, 59 mins, 29 secs
about 1 month
44 days, 23 hrs, 59 mins, 30 secs 59 days, 23 hrs, 59 mins, 29 secs
about 2 months
59 days, 23 hrs, 59 mins, 30 secs 1 yr minus 1 sec
[2..12] months
1 yr 1 yr, 3 months
about 1 year
1 yr, 3 months 1 yr, 9 months
over 1 year
1 yr, 9 months 2 yr minus 1 sec
almost 2 years
2 yrs max time or date
(same rules as 1 yr)
CPAN модуль
Репозиторий