Ver Mensaje Individual
  #13 (permalink)  
Antiguo 22/07/2011, 22:41
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: Consulta PHP funcion date()

Hola,

¿Y porque razón pones a hacer un cálculo con ciclos a una calculadora? Algunas veces se nos olvida que todos los cálculos se pueden realizar matemáticamente, si conocemos bien las matemáticas.

Por ejemplo:
Código PHP:
function diferencia_periodo($a$z) {
  if (
$a $z) return $z;
  return (
ceil((($z $a) / 60 60) / 6) * 60 60) + $a;

No necesitas hacer un ciclo que se repita para saber cual es la diferencia de periodos de 6 horas entre dos números que denotan un instante en el tiempo (el timestamp o tiempo serial de Unix).

Aunque posiblemente así está mas claro:
Código PHP:
define("MINUTOS_POR_HORA"60);
define("SEGUNDO_POR_HORA"60);
define("PERIODO_HORAS",     6);

function 
diferencia_periodo_detalle($a$z) {
  if (
$a $z) return $z;
  
$r $z $a// LA DIFERENCIA EN SEGUNDOS ENTRE LAS DOS FECHAS
  
$r $r SEGUNDO_POR_HORA MINUTOS_POR_HORA// LA DIFERENCIA EN HORAS
  
$r $r PERIODO_HORAS// LA DIFERENCIA EN PERIODOS DE 6 HORAS
  
$r ceil($r); // LA DIFRENCIA REDONDEADA AL ENTERO MAS ALTO
  
$r $r PERIODO_HORAS SEGUNDO_POR_HORA MINUTOS_POR_HORA// MULTIPLICA LA DIFERENCIA POR EL PERIODO EN SEGUNDOS
  
return $r $a// SE LE AGREGA EL PERIODO INICIAL

Ahora podemos realizar algunas pruebas:
Código PHP:
echo date("Y-m-d H:i:s"diferencia_periodo(strtotime("2011-07-22 22:15:00"), strtotime("2011-07-22 22:20:00"))) . "\n"// DIFERENCIA DE  5 MINUTOS
echo date("Y-m-d H:i:s"diferencia_periodo(strtotime("2011-07-22 22:15:00"), strtotime("2011-07-23 04:15:00"))) . "\n"// DIFERENCIA DE  6 HORAS
echo date("Y-m-d H:i:s"diferencia_periodo(strtotime("2011-07-22 22:15:00"), strtotime("2011-07-23 04:16:00"))) . "\n"// DIFERENCIA DE  6 HORAS 1 MINUTO
echo date("Y-m-d H:i:s"diferencia_periodo(strtotime("2011-07-22 22:15:00"), strtotime("2011-07-23 10:15:00"))) . "\n"// DIFERENCIA DE 12 HORAS
echo date("Y-m-d H:i:s"diferencia_periodo(strtotime("2011-07-22 22:15:00"), strtotime("2011-07-23 10:15:01"))) . "\n"// DIFERENCIA DE 12 HORAS 1 SEGUNDO 
Saludos,