В ларавеле даты представлены классом Carbon\Carbon.
Там уже есть все компоненты даты.
Так что единственная сложность здесь может возникнуть в склонении числительных.
Однако и эта проблемка относительно просто решается для каждого отдельного языка
В русском языке присутствуют три возможных формы, в английском еще проще – там их две.
Для русского может быть такая функция склонения числительных:
function plural(array $a, int $n): string
{
$index = $n % 10 == 1 && $n % 100 != 11 ? 0
: (
$n % 10 >= 2 && $n % 10 <= 4 && ($n % 100 < 10 || $n % 100 >= 20)
? 1 : 2
);
return $a[$index];
}
И такой код для формирования строки
$date = now();
$s = $date->hour.' '.plural(['час', 'часа', 'часов'], $date->hour).' '
.$date->minute.' '.plural(['минута', 'минуты', 'минут'], $date->minute);
dump($s);
Кроме того, в ларавел есть встроенные средства плюрализации в строках перевода.
https://laravel.com/docs/9.x/localization#pluralization