Pagina 1 din 1

Funcţie php ore

Scris: Dum Feb 19, 2012 2:14 pm
de lexta
Bună Ziua, am următorul cod php:

Cod: Selectaţi tot

function m2h($mins) {
            if ($mins < 0) {
                $min = Abs($mins);
            } else {
                $min = $mins;
            }
            $H = Floor($min / 60);
            $M = ($min - ($H * 60)) / 100;
            $hours = $H +  $M;
            if ($mins < 0) {
                $hours = $hours * (-1);
            }
            $expl = explode(".", $hours);
            $H = $expl[0];
            if (empty($expl[1])) {
                $expl[1] = 00;
            }
            $M = $expl[1];
            if (strlen($M) < 2) {
                $M = $M . 0;
            }
            $hours = $H . ":" . $M;
            return $hours;
    }

$totaltime = 1500;

$timp  = m2h($totaltime);

echo $timp;


La timp va fi 25:00, adică 25 de ore şi 00 minute, aş dori să îmi arate aşa:

1:1:00 Sau 1zi/2zile , 1ora/2ore şi 00 minute

Mulţumesc!

Scris: Dum Feb 19, 2012 6:13 pm
de Birkoff
vezi daca te ajuta sa o modifici pe asta sa iti afiseze cum iti place

Cod: Selectaţi tot

/**
  * conversie minute in ore:min
  *
  * @param int $total_min
  *
  * @return str 'HH:MM'
 **/
function conversie_timp($total_min) {
    if ( ! $total_min )
        return '00:00';
    $decimal_time = $total_min / 60;
    $hour = intval($decimal_time);
    if ( strlen($hour) == 1)
        $hour = '0' . $hour;
    $decimal_time -= intval($decimal_time);
    $decimal_time *= 60;
    $min = round($decimal_time);
    if ( strlen($min) == 1)
        $min = '0' . $min;
    // format HH:MM
    return $hour . ':' . $min;
}

Scris: Dum Feb 19, 2012 6:59 pm
de socu
@Birkoff acolo se foloseste modulo nu carpeli cu intval:

Cod: Selectaţi tot

function conversie_timp($total_min) {
  $min = $total_min % 60;
  $ore = ($total_min - $min) / 60;
  return sprintf("%1$02d:%2$02d", $ore, $min);
}


@lexta foloseste-te de timestamp

Cod: Selectaţi tot

$min = 60 * 24 * 3 + 120 + 32; // 3 zile, 2 ore, 32 minute
echo gmdate("z:H:i", $min * 60);

Scris: Lun Feb 20, 2012 2:34 am
de whooper
socu .. foarte eleganta solutia folosind gmdate. Cea cu Modulo e si mai buna in cazul in care rezultatul final nu se poate construi cu parametrii de formatare :)

Dar de ce gmdate() si nu date() ?

Scris: Lun Feb 20, 2012 11:51 am
de socu
Dar de ce gmdate() si nu date() ?

Ca sa nu fie influentat rezultatul de timezone.