Foros del Web » Programando para Internet » PHP »

Comparar fechas para obtener diferencia.

Estas en el tema de Comparar fechas para obtener diferencia. en el foro de PHP en Foros del Web. Hola a todos, tengo una página en PHP que recupera la fecha del dia con la hora a través de: date() ¿Sabéis qué función puedo ...
  #1 (permalink)  
Antiguo 31/07/2005, 11:06
 
Fecha de Ingreso: abril-2003
Mensajes: 99
Antigüedad: 14 años, 8 meses
Puntos: 0
Comparar fechas para obtener diferencia.

Hola a todos,

tengo una página en PHP que recupera la fecha del dia con la hora a través de:

date()

¿Sabéis qué función puedo usar para compara dos fechas y que me devuelva los minutos de diferencia entre ellas?

Gracias a todos y saludos,
Alberto.
  #2 (permalink)  
Antiguo 04/08/2005, 18:07
Avatar de lalogrosz  
Fecha de Ingreso: mayo-2002
Ubicación: Capital Federal
Mensajes: 339
Antigüedad: 15 años, 6 meses
Puntos: 6
podes usar la funcion mktime que se usa para comparar fechas.
Busca la info en php.net que ahi te explica como usarla.
Disculpa pero ahora no tengo nada para mostrarte.
__________________
"Vivir....solo cuesta Vida"
  #3 (permalink)  
Antiguo 05/08/2005, 00:42
Avatar de turco_7  
Fecha de Ingreso: diciembre-2003
Ubicación: Córdoba, Argentina
Mensajes: 1.044
Antigüedad: 14 años
Puntos: 19
aca tenes un ejemplo ...

Código PHP:
<?php
$dateFrom 
"25-03-2005 14:20:00"//aca pones la fecha inicial .. osea el desde
$dateTo date("d-m-Y H:i:s"strtotime('now')); // aca te toma la fecha actual

$diffd getDateDifference($dateFrom$dateTo'd');
$diffh getDateDifference($dateFrom$dateTo'h');
$diffm getDateDifference($dateFrom$dateTo'm');
$diffs getDateDifference($dateFrom$dateTo's');
$diffa getDateDifference($dateFrom$dateTo'a');

echo 
'Calculating difference between ' $dateFrom ' and ' $dateTo ' <br /><br />';

echo 
$diffd ' days.<br />';
echo 
$diffh ' hours.<br />';
echo 
$diffm ' minutes.<br />';
echo 
$diffs ' seconds.<br />';

echo 
'<br />In other words, the difference is ' $diffa['days'] . ' days, ' $diffa['hours'] . ' hours, ' $diffa['minutes'] . ' minutes and ' $diffa['seconds'] . ' seconds.<br>';

?>
codigo de la funcion:

Código PHP:
<?php

function getDateDifference($dateFrom$dateTo$unit 'd')
{
   
$difference null;

   
$dateFromElements split(' '$dateFrom);
   
$dateToElements split(' '$dateTo);

   
$dateFromDateElements split('-'$dateFromElements[0]);
   
$dateFromTimeElements split(':'$dateFromElements[1]);
   
$dateToDateElements split('-'$dateToElements[0]);
   
$dateToTimeElements split(':'$dateToElements[1]);

   
// Get unix timestamp for both dates

   
$date1 mktime($dateFromTimeElements[0], $dateFromTimeElements[1], $dateFromTimeElements[2], $dateFromDateElements[1], $dateFromDateElements[0], $dateFromDateElements[2]);
   
$date2 mktime($dateToTimeElements[0], $dateToTimeElements[1], $dateToTimeElements[2], $dateToDateElements[1], $dateToDateElements[0], $dateToDateElements[2]);

   if( 
$date1 $date2 )
   {
       return 
null;
   }

   
$diff $date2 $date1;

   
$days 0;
   
$hours 0;
   
$minutes 0;
   
$seconds 0;

   if (
$diff 86400 <= 0)  // there are 86,400 seconds in a day
   
{
       
$days $diff 86400;
   }

   if(
$diff 86400 0)
   {
       
$rest = ($diff 86400);
       
$days = ($diff $rest) / 86400;

       if( 
$rest 3600 )
       {
           
$rest1 = ($rest 3600);
           
$hours = ($rest $rest1) / 3600;

           if( 
$rest1 60 )
           {
               
$rest2 = ($rest1 60);
               
$minutes = ($rest1 $rest2) / 60;
               
$seconds $rest2;
           }
           else
           {
               
$minutes $rest1 60;
           }
       }
       else
       {
           
$hours $rest 3600;
       }
   }

   switch(
$unit)
   {
       case 
'd':
       case 
'D':

           
$partialDays 0;

           
$partialDays += ($seconds 86400);
           
$partialDays += ($minutes 1440);
           
$partialDays += ($hours 24);

           
$difference $days $partialDays;

           break;

       case 
'h':
       case 
'H':

           
$partialHours 0;

           
$partialHours += ($seconds 3600);
           
$partialHours += ($minutes 60);

           
$difference $hours + ($days 24) + $partialHours;

           break;

       case 
'm':
       case 
'M':

           
$partialMinutes 0;

           
$partialMinutes += ($seconds 60);

           
$difference $minutes + ($days 1440) + ($hours 60) + $partialMinutes;

           break;

       case 
's':
       case 
'S':

           
$difference $seconds + ($days 86400) + ($hours 3600) + ($minutes 60);

           break;

       case 
'a':
       case 
'A':

           
$difference = array (
               
"days" => $days,
               
"hours" => $hours,
               
"minutes" => $minutes,
               
"seconds" => $seconds
           
);

           break;
   }

   return 
$difference;
}
?>
lo saque de aca ...http://ar2.php.net/manual/es/function.mktime.php

suerte y saludos
__________________
Mi Blog http://turco7.blogspot.com
Usuario Linux : 404289
Mi última página: http://www.digitalservicecba.com.ar - Reparacion de camaras digitales!
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 18:19.