Funcţie php ore

Secţiune dedicată începatorilor.

Moderatori: Moderatori, Start Moderator

lexta
Average Member
Mesaje: 110
Membru din: Mie Noi 16, 2011 11:53 pm

Funcţie php ore

Mesajde lexta » Dum Feb 19, 2012 2:14 pm

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!



Avatar utilizator
Birkoff
Senior Member
Mesaje: 6380
Membru din: Joi Mar 18, 2004 2:34 pm
Localitate: Bucuresti
Contact:

Mesajde Birkoff » Dum Feb 19, 2012 6:13 pm

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;
}
1) CMS, ERP, CRM, etc... (doar pentru clienti))
2) Portofoliu, servicii, contact, blog
3) Folositi aceasta clasa sql in proiectele voastre (open source)
4) Vrei un magazin virtual la cheie, usor de folosit, cu api-uri incluse pentru maximizarea vanzarilor si multe alte facilitati? Da un semn si discutam.

Avatar utilizator
socu
Senior Member
Mesaje: 470
Membru din: Mie Apr 22, 2009 11:05 pm
Localitate: Marghita

Mesajde socu » Dum Feb 19, 2012 6:59 pm

@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);

whooper
Senior Member
Mesaje: 866
Membru din: Mar Apr 05, 2005 9:58 pm
Localitate: Toronto ON

Mesajde whooper » Lun Feb 20, 2012 2:34 am

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() ?
Join The Forums - Time Well Wasted!

Avatar utilizator
socu
Senior Member
Mesaje: 470
Membru din: Mie Apr 22, 2009 11:05 pm
Localitate: Marghita

Mesajde socu » Lun Feb 20, 2012 11:51 am

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

Ca sa nu fie influentat rezultatul de timezone.


Înapoi la “PHP Incepători”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 44 vizitatori