Есть некоторый код, который подходит близко, если вы используете DateTime::Duration
для представления длительности. DateTime::Format::Human::Duration
может делать большую часть того, что вам нужно, но будет иметь тенденцию включать дополнительные части длительности сверх того, что вас интересует. Поскольку средство форматирования является объектом, как и продолжительность, оба могут быть введены в шаблон как переменные. Вы также просто используете единицы измерения длительности напрямую, чтобы сделать это в шаблоне, но это может быть много логики.
Time::Duration
делает более точную вещь, поэтому он предусматривает ограничение для двух типов модулей, но не имеет объектного интерфейса, поэтому вы не можете вставить его непосредственно как переменную, но это может быть хорошая основа для пользовательского фильтра.
Если бы это был я, я бы обернул нужную мне функцию в новый класс форматирования, который занимает время, которое вам нужно, сделал бы экземпляр и вставил бы это как переменную в шаблон. Как правило, таким образом проще выполнить модульное тестирование.