FUNCIONES PARA MANEJO DE TIEMPOS
Las funciones para obtener las horas minutos y segundos de una hora HH:MM:SS,sss son respectivamente:
  • nhoras($f) que es substr($f,0,2).
  • nminutos($f) que es substr($f,3,2).
  • nsegundos($f) que es substr($f,6).
  • intval me asegura que días sea integer
Para pasar la hora a segundos se efectúa $segtot = $horas*3600+$min*60+$seg;
Para pasar los segundos a hora es la función segtohora($S): explicada en el código.
En todos los casos se hace un cast a string porque si floor actúa sobre float trunca mal por los decimales, string lo "castea" a int.
La hora actual: $ahora = date("H").":".date("i").":".date("s");
						
function nhoras($f) {
	return substr($f,0,2);
}
function nminutos($f) {
	return substr($f,3,2) ;
}
function nsegundos($f) {
	return substr($f,6);
}

function segtohora($s){
 if ($s>86399){                                       //más de 86.399 seg es un día (24hs)
	return NULL;
 }else{
	$h=floor((string)$s/3600);                        // al dividir por 3600 (seg de una hora)
	if (strlen($h)==1){                               // si solo tiene 1 dígito le antepone un 0
		$hc= "0".$h;
	}else{
		$hc= $h;
	}
	$m = floor((string)(($s - ($h * 3600)) / 60));    // le resta los seg de la hora y divide por 60 da m
	if (strlen($m)==1){                               // si solo tiene 1 dígito le antepone un 0
		$mc= "0".$m;
	}else{
		$mc= $m;
	}
	$seg = $s - ($h * 3600) - ($m * 60);              // le resta los seg de la hora y min da segs.
	if (strlen($seg)==1){                             // si solo tiene 1 dígito le antepone un 0
		$sc= "0".$seg;
	}else{
		$sc= $seg;
	}
	
	$ti = $hc.":".$mc.":".$sc;                       // arma hh:mm:ss
	return $ti;
 }
}	

$ahora = date("H").":".date("i").":".date("s");  	//hora de 00 a 23 
						
					
© IQSystems 2023