Принятый ответ беспокоит меня по многим причинам, включая отношение к реальному календарю. Лично я бы, наверное, сделал это:
<?php
$start = strtotime("today");
$end = strtotime("tomorrow");
$now = time();
$secondstoday = $end - $start;
$secondselapsed = $now - $start;
$percentage = ($secondselapsed / $secondstoday ) * 100;
printf('%.2f%% of the day has passed (%d out of %d seconds)', $percentage, $secondselapsed, $secondstoday);
результат:
72.22% of the day has passed (62402 out of 86400 seconds)
Затем вы можете расширить его, сделав функцию и изменив диапазон с "today"
и "tomorrow"
на что-то другое.