Situatie
Deoarece calculele ce implică ore și minute sunt făcute în sistem zecimal (baza 10) iar orele sunt în sistem sexazecimal (baza 60) o conversie de forma
// 130 minute => 2 ore 10 min
echo round(130/60,2); // va afisa 2.17 (incorect)
Va afisa un numar incorect.
Solutie
Pasi de urmat
In continuare o sa va prezint o varianta de cod php pentru convertirea unor minute in ore si minute.
$decimal_time = 130 / 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;
}
echo $hour . ‘:’ . $min; // va afisa 02:10 (timp corect)
Pe baza codului de mai sus se poate implementa o functie care poate fi apelata mult mai usor in proiecte:
/**
* 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;
return $hour . ‘:’ . $min;
}
// apelul functiei
echo conversie_timp(140); // va afisa 02:20
Leave A Comment?