Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Calcular dias entre fechas

Estas en el tema de Calcular dias entre fechas en el foro de PHP en Foros del Web. Estoy creando un script que me calcule los dias de diferencia que hay entre dos fechas, lo necesito para un sistema de alertas que estoy ...
  #1 (permalink)  
Antiguo 22/09/2015, 13:37
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 22 años, 10 meses
Puntos: 20
Calcular dias entre fechas

Estoy creando un script que me calcule los dias de diferencia que hay entre dos fechas, lo necesito para un sistema de alertas que estoy creando, lo que necesito es: tengo una fecha inicial, a esa fecha le sumo los dias de vencimiento para el caso, luego entonces le resto (a esa suma) la fecha de hoy para saber cuantos dias han transcurrido y luego halar la diferencia entre el tiempo de vencimiento y la fecha actual, para enviar una alerta faltando un dia para vencerse el caso.

lo que he hecho hasta ahora es:
Código PHP:
Ver original
  1. <?php
  2.  
  3.     include('conexion.php');
  4.     //Establecemos como zona horaria Bogotá, para que no haya inconvenientes con ningun servidor al que se migre la app
  5.     date_default_timezone_set('America/Bogota');
  6.    
  7.  
  8.     //Defino la fecha de hoy
  9.  
  10.     $fecha_hoy = date("Y-m-d h:i:s");
  11.  
  12.     echo $fecha_hoy."<br>";
  13.  
  14.     //Traemos las fechas de los casos almacenados
  15.  
  16.     $consulta_fechas = "SELECT * FROM caso";
  17.     $rcf = mysql_query($consulta_fechas);
  18.     echo "<table border='1'>";
  19.     while ($row = mysql_fetch_assoc($rcf)) {
  20.         $fecha_caso = $row['FechaCaso'];
  21.         $dias = $row['dias'];
  22.  
  23.         echo "<tr><td>".$fecha_caso."</td>";
  24.         echo "<td>".$dias."</td>";
  25.         echo "<td>".strtotime($fecha_hoy)."</td>";
  26.         echo "<td>".strtotime($fecha_caso)."</td>";
  27.  
  28.         //Calculamos la diferencia entre la fecha de hoy y la fecha de creación del caso
  29.         $operacion = strtotime($fecha_hoy) - strtotime($fecha_caso);
  30.         echo "<td>".$operacion."</td>";
  31.         //Convertimos esa diferencia en segundos a un valor entero
  32.         $diferencia_dias = round($operacion/(60*60*24));
  33.         echo "<td>".$diferencia_dias."</td>";
  34.  
  35.         //Calculamos la diferencia de los dias entre vencimiento del caso y los dias transcurridos
  36.  
  37.         $vence = $dias - $diferencia_dias;
  38.         echo "<td>".$vence."</td></tr>";
  39.  
  40.     }
  41.     echo "</table>";
  42. ?>

Lo que pasa es que los resultados de las fechas no me cuadran, es decir los resultados que me arroja son superiores a 500 dias de diferencia, no se que pasa, se que es más problema de formulación de algoritmo, alguien de ma una mano o una idea de como hacerlo mejor.

Gracias
__________________
Say no more.......
  #2 (permalink)  
Antiguo 22/09/2015, 15:14
Avatar de Perr0  
Fecha de Ingreso: mayo-2005
Ubicación: Santiago de Chile, Chile
Mensajes: 676
Antigüedad: 18 años, 10 meses
Puntos: 79
Respuesta: Calcular dias entre fechas

te dejo un ejemplo para que lo estudies, con función es mejor:
Código PHP:
<?php
#el formato es dia/mes/año hora:minutos:segundos
#se puede usar slash "/" o guión "-"

#llamo la función con dos parámetros:
echo dif_entre_fechashoras("16/9/2015 17:48:15"20);

function 
dif_entre_fechashoras($fecha_creacion=""$dias_vencimiento=0){
    
#    $fecha_creacion: debe ser en formato mencionado al principio
    #    $dias_vencimiento: número entero
    
$fecha_creacion str_replace('/''-'$fecha_creacion);
    list(
$fecha$hora) = explode(" "$fecha_creacion);
    list(
$dia$mes$anio) = explode("-",$fecha);
    list(
$hor$min$seg) = explode(":",$hora);
    
    
$resultado $dias_vencimiento floor((time()-mktime($hor$min$seg$mes$dia$anio))/ (60 60 24)); 
    return 
$resultado;
}
?>
saludos
__________________
Numerador Mp3 en Access =)
http://www.mediafire.com/download/r9...pdw/mp3(2).zip
  #3 (permalink)  
Antiguo 22/09/2015, 17:26
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Calcular dias entre fechas

No seria mas sencillo si obtienes eso mediante una consulta a mysql ?
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.
  #4 (permalink)  
Antiguo 23/09/2015, 05:19
Avatar de jpint  
Fecha de Ingreso: junio-2012
Ubicación: Ciudad Real - España
Mensajes: 97
Antigüedad: 11 años, 10 meses
Puntos: 12
Respuesta: Calcular dias entre fechas

Puedes sumar las fechas con strtotime() para simplificar el proceso:

Código PHP:
$fecha date('16/9/2015');
$nuevafecha strtotime '+20 day' strtotime $fecha ) ) ; 
O con date_add():

Código PHP:
$fecha date_create('16/9/2015');
date_add($fechadate_interval_create_from_date_string('20 days')); 

Para la resta final puedes utilizar date_sub():

Código PHP:
date_sub($fechadate_interval_create_from_date_string$hoy )); 
  #5 (permalink)  
Antiguo 23/09/2015, 15:26
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 22 años, 10 meses
Puntos: 20
Respuesta: Calcular dias entre fechas

Muchas gracias a todos, hoy he estado fuera todo el día y no he podido revisar el tema, sin embargo, mañana a primera hora en la maññana me pongo en el cuento y les comento como me fué, si hay más ideas son bien recibidas.
__________________
Say no more.......
  #6 (permalink)  
Antiguo 23/09/2015, 21:20
Avatar de el_cesar  
Fecha de Ingreso: mayo-2001
Ubicación: Cali
Mensajes: 2.423
Antigüedad: 22 años, 10 meses
Puntos: 20
Respuesta: Calcular dias entre fechas

Muchas Gracias a todos, resulta que el script que tenía estaba haciendo bien la operación,

el problema estaba en la manera como expresaba la fecha actual, pues la estaba tomando como

Código PHP:
Ver original
  1. $fecha_hoy = date("Y-m-d h:i:s");

Y lo correcto era

Código PHP:
Ver original
  1. $fecha_hoy = date("Y/m/d h:i:s");

No entiendo en que radica la diferencia, solo modifiqué eso y lo calculo bien, llegué a esta conclusión, luego de probar la función que sugirió Perr0

Gracias a todos por su ayuda.
__________________
Say no more.......
  #7 (permalink)  
Antiguo 24/09/2015, 07:30
Avatar de hhs
hhs
Colaborador
 
Fecha de Ingreso: junio-2013
Ubicación: México
Mensajes: 2.995
Antigüedad: 10 años, 9 meses
Puntos: 379
Respuesta: Calcular dias entre fechas

Era mas sencillo calcular la fecha de la alerta a partir de la FechaCaso
__________________
Saludos
About me
Laraveles
A class should have only one reason to change.

Etiquetas: calcular, dias, fecha, mysql, select
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 15:31.