Отсчет времени с момента регистрации пользователя по текущий день

Я хотел бы добавить в профиль пользователей время с момента регистрации по текущий день в формате:

С нами: 7 лет 3 месяца 2 недели 6 дней

По всей видимости, здесь необходима функция human_time_diff() https://wp-kama.ru/function/human_time_diff, но как ей воспользоваться в моем случае не представляю.

Для начала делал подобное, но выводит 50 лет, почему-то)

$udata = get_userdata( $userdata->ID );
$time_diff = human_time_diff( $udata->user_registered('U'), current_time('timestamp') );
echo $time_diff;
Заметки к вопросу:
TrueLie 4.5 лет назад

Нашел еще вариант с использованием diff https://www.php.net/manual/ru/datetime.diff.php и format https://www.php.net/manual/ru/dateinterval.format.php

$today_date      = new DateTime( date( 'Y-m-d', strtotime( 'today' ) ) );
$register_date  = get_the_author_meta( 'user_registered', $userdata->ID );
$registered = new DateTime( date( 'Y-m-d', strtotime( $register_date ) ) );
$interval_date   = $today_date->diff( $registered );
if( $interval_date->days < 31 ) {
	echo num_decline($interval_date->format ('%d'), 'день, дня, дней' );
}
elseif( $interval_date->days < 365 ) {
	echo num_decline($interval_date->format ('%m'), ' месяц , месяца , месяцев ' );
	echo num_decline($interval_date->format ('%d'), ' день , дня , дней ' );
}
elseif( $interval_date->days > 365 ) {
	echo num_decline($interval_date->format ('%y'), ' год , года , лет ' );
	echo num_decline($interval_date->format ('%m'), ' месяц , месяца , месяцев ' );
	echo num_decline($interval_date->format ('%d'), ' день , дня , дней ' );
}

Тут уже с num_decline из доработанной @Kama функции https://wp-kama.ru/question/funktsiya-skloneniya-slov-posle-chisel-php

Погонял, вроде работает. Минус - в format нет недель, а хотелось бы.

Вопрос: насколько верно все сделал? Что можно сделать лучше?