@Timkuk

Как решить проблему со склонением минут в функции?

Пишу функцию, которая вычисляет текущее время и возвращает его в формате с правильными склонениями. Помогите решить задачу с минутами.
function myTime($hour, $minute) {
    $resulth = ($hour <= 10) ? $hour % 10 : $hour % 20;
    switch ($resulth) {
        case 1:
            echo "$hour час";
            break;
        case 2:
        case 3:
        case 4:
            echo "$hour часа";
            break;
        default:
            echo "$hour часов";
            break;
    }
    $resultm = ($minute <= 10) ? $minute % 10 : $minute % 20;
    switch ($resultm) {
        case 1:
            return "$minute минута";
        case 2:
        case 3:
        case 4:
            return "$minute минуты";
        default:
            return "$minute минут";
    }
}
$hour = rand(0, 24);
$minute = rand(0, 59);
echo myTime($hour, $minute);
  • Вопрос задан
  • 428 просмотров
Решения вопроса 1
@BorisKorobkov Куратор тега PHP
Web developer
Лучше не изобретать велосипед, а использовать готовый https://www.php.net/manual/ru/book.intl.php
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
Комментировать
iResource
@iResource
Разработчик IR XML2Ozon
Такая компактненькая функция с этим поможет. И не только с минутами )

function word_variation_rus($chislo, $mnogo, $odin, $dva) {
    // @author Alexey Gnevyshev
    $ost_10 = $chislo%10;
    if ($ost_10 == 0 || $ost_10 >= 5 || in_array($chislo%100, range(11,19))) $string_txt = "$chislo $mnogo";
    else {
        if ($ost_10 == 1) $string_txt = "$chislo $odin";
        else if (in_array($ost_10, range(2,4))) $string_txt = "$chislo $dva";
    }
    return $string_txt;
}

(источник: https://blog.inform-resource.ru/2019/10/blog-post_...)

И потом:
echo word_variation_rus($minute, 'минут', 'минута', 'минуты');
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы