Страницы

Поиск по вопросам

воскресенье, 9 февраля 2020 г.

Вывести всё время в сутках

#php


Надо вывести время в формате 23:41, я это сделал, как можно упростить код?

Из-за того, что PHP 00 превращает в 0, пришлось создавать дополнительные переменные.

$h = 0;
    $h2 = 0;
    $m = 0;
    $m2 = 0;
    $hour = 0;

    function foo() {
        global $hour;
        global $h;
        global $h2;
        global $m;
        global $m2;

        for($i = 0; $i < 60; $i++) {
            if($hour < 10) {
                if($m2 < 10) {
                    echo $h . $hour . ':' . $m . $m2;
                    $m2++;
                }


                else {
                    echo $h . $hour . ':' . $m2;
                    $m2++;
                }
            }

            else {
                if($m2 < 10) {
                    echo $hour . ':' . $m . $m2;
                    $m2++;
                }

                else {
                    echo $hour . ':' . $m2;
                    $m2++;
                }
            }

            echo '
'; if($i == 59) { $hour++; } } $m = 0; $m2 = 0; } for($k = 0; $k < 24; $k++) { echo foo(); echo '
'; }


Ответы

Ответ 1



если хочется вручную сделать то может как то так попроще? for($i=0; $i< 24*60; $i++){ $h = $i / 60; $m = $i % 60; printf("%02d:%02d\n", $h, $m); } зы: если надо в переменную сохранить, то есть sprintf. Если не нравятся эти функции, то можно строку дополнить до нужной длины с помощью str_pad($h, 2, '0'), например, и т.п.

Ответ 2



for($h = 0; $h < 24; $h++){ // 24 часа for($m = 0; $m < 60; $m++){ // по 60 минут echo sprintf('%02d:%02d', $h, $m); } }

Ответ 3



Предложу другой вариант - воспользоваться классом DateTime: function getTime($hour, $min, $fmt = "H:i") { $time = new DateTime("$hour:$min"); return $time->format($fmt); } echo getTime(3, 9)."\n"; // 03:09 Плюс в том, что при желании можно сменить формат, например, на 12ч с am/pm echo getTime(13, 58, "h:i a")."\n"; // 01:58 pm

Комментариев нет:

Отправить комментарий