Я не знаю ничего встроенного, но написать достаточно просто:
function formatSeconds($secondsLeft) {
$minuteInSeconds = 60;
$hourInSeconds = $minuteInSeconds * 60;
$dayInSeconds = $hourInSeconds * 24;
$days = floor($secondsLeft / $dayInSeconds);
$secondsLeft = $secondsLeft % $dayInSeconds;
$hours = floor($secondsLeft / $hourInSeconds);
$secondsLeft = $secondsLeft % $hourInSeconds;
$minutes= floor($secondsLeft / $minuteInSeconds);
$seconds = $secondsLeft % $minuteInSeconds;
$timeComponents = array();
if ($days > 0) {
$timeComponents[] = $days . " day" . ($days > 1 ? "s" : "");
}
if ($hours > 0) {
$timeComponents[] = $hours . " hour" . ($hours > 1 ? "s" : "");
}
if ($minutes > 0) {
$timeComponents[] = $minutes . " minute" . ($minutes > 1 ? "s" : "");
}
if ($seconds > 0) {
$timeComponents[] = $seconds . " second" . ($seconds > 1 ? "s" : "");
}
if (count($timeComponents) > 0) {
$formattedTimeRemaining = implode(", ", $timeComponents);
$formattedTimeRemaining = trim($formattedTimeRemaining);
} else {
$formattedTimeRemaining = "No time remaining.";
}
return $formattedTimeRemaining;
}
Я не проверил это полностью, но тесты, которые я выполнял, работали нормально.Возможно, вы захотите немного протестировать его перед использованием.