Foros del Web » Programando para Internet » PHP »

Diferencia entre dos fechas en PHP

Estas en el tema de Diferencia entre dos fechas en PHP en el foro de PHP en Foros del Web. Hola amigos, necesito un script que me diga cuantos dias hay entre una fecha inicial y una fecha final. Ej Fecha de registro: 2011-02-01 - ...
  #1 (permalink)  
Antiguo 28/06/2011, 22:25
 
Fecha de Ingreso: enero-2010
Ubicación: Colombia
Mensajes: 238
Antigüedad: 14 años, 9 meses
Puntos: 2
De acuerdo Diferencia entre dos fechas en PHP

Hola amigos, necesito un script que me diga cuantos dias hay entre una fecha inicial y una fecha final. Ej
Fecha de registro: 2011-02-01 - Fecha de contestación: 2011-02-30 = 29 Dias

Tengo este script que funciona perfecto pero el problema es que solamente funciona con formato de fecha 13-01-2011 y lo necesito es 2011-01-13 ya que trabajo con Bases de datos MySQL.

Aqui les dejo el script:


<?php
$fechaInicio ="13-01-2011";
$fechaActual = "12-02-2011";
$diaActual = substr($fechaActual, 0, 2);
$mesActual = substr($fechaActual, 3, 5);
$anioActual = substr($fechaActual, 6, 10);
$diaInicio = substr($fechaInicio, 0, 2);
$mesInicio = substr($fechaInicio, 3, 5);
$anioInicio = substr($fechaInicio, 6, 10);
$b = 0;
$mes = $mesInicio-1;
if($mes==2){
if(($anioActual%4==0 && $anioActual%100!=0) || $anioActual%400==0){
$b = 29;
}else{
$b = 28;
}
}
else if($mes<=7){
if($mes==0){
$b = 31;
}
else if($mes%2==0){
$b = 30;
}
else{
$b = 31;
}
}
else if($mes>7){
if($mes%2==0){
$b = 31;
}
else{
$b = 30;
}
}
if(($anioInicio>$anioActual) || ($anioInicio==$anioActual && $mesInicio>$mesActual) ||
($anioInicio==$anioActual && $mesInicio == $mesActual && $diaInicio>$diaActual)){
echo "La fecha de inicio ha de ser anterior a la fecha Actual";
}else{
if($mesInicio <= $mesActual){
$anios = $anioActual - $anioInicio;
if($diaInicio <= $diaActual){
$meses = $mesActual - $mesInicio;
$dies = $diaActual - $diaInicio;
}else{
if($mesActual == $mesInicio){
$anios = $anios - 1;
}
$meses = ($mesActual - $mesInicio - 1 + 12) % 12;
$dies = $b-($diaInicio-$diaActual);
}
}else{
$anios = $anioActual - $anioInicio - 1;
if($diaInicio > $diaActual){
$meses = $mesActual - $mesInicio -1 +12;
$dies = $b - ($diaInicio-$diaActual);
}else{
$meses = $mesActual - $mesInicio + 12;
$dies = $diaActual - $diaInicio;
}
}
echo "Años: ".$anios." <br />";
echo "Meses: ".$meses." <br />";
echo "Días: ".$dies." <br />";
}?>
  #2 (permalink)  
Antiguo 28/06/2011, 22:41
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: Diferencia entre dos fechas en PHP

Esto te puede server : http://cl.php.net/manual/es/datetime.diff.php
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.
  #3 (permalink)  
Antiguo 28/06/2011, 22:48
 
Fecha de Ingreso: enero-2010
Ubicación: Colombia
Mensajes: 238
Antigüedad: 14 años, 9 meses
Puntos: 2
Respuesta: Diferencia entre dos fechas en PHP

Gracias amigo pero no me sirvio, me sale el siguiente error:

Fatal error: Call to undefined function date_diff() in C:\AppServ\www\fechas.php on line 31

¿Alguien conoce otra manera?
  #4 (permalink)  
Antiguo 28/06/2011, 23:47
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 15 años, 6 meses
Puntos: 322
Respuesta: Diferencia entre dos fechas en PHP

Estás seguro de que usaste date_diff() como un nuevo objeto y no como una simple función?
Postea el código que usaste con date_diff para poder ayudarte

Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #5 (permalink)  
Antiguo 29/06/2011, 07:46
 
Fecha de Ingreso: enero-2010
Ubicación: Colombia
Mensajes: 238
Antigüedad: 14 años, 9 meses
Puntos: 2
Respuesta: Diferencia entre dos fechas en PHP

Hola Sourcegeek mira, utilice el codigo de la siguiente manera:

<?php
$datetime1 = date_create('2009-10-11');
$datetime2 = date_create('2009-10-13');
$intervalo = date_diff($datetime1, $datetime2);
echo $intervalo->format('%R%a días');
?>

Error que me arroja:
Fatal error: Call to undefined function date_diff() in C:\AppServ\www\fechas.php on line 31

Fue lo unico que utilize en el fichero PHP, pues si no es asi o me hace falta algo me pueden corregir, gracias.
  #6 (permalink)  
Antiguo 29/06/2011, 08:56
Avatar de skiper0125  
Fecha de Ingreso: octubre-2010
Ubicación: $this->Mexico('Toluca');
Mensajes: 1.127
Antigüedad: 14 años, 1 mes
Puntos: 511
Respuesta: Diferencia entre dos fechas en PHP

Hola que tal.

Te dejo esta funcion que utilizo para obtener el numero de dias estre 2 fechas, pruebala y comenta

Código PHP:
Ver original
  1. function diff_dte($date1, $date2){
  2.        if (!is_integer($date1)) $date1 = strtotime($date1);
  3.        if (!is_integer($date2)) $date2 = strtotime($date2);  
  4.        return floor(abs($date1 - $date2) / 60 / 60 / 24);
  5. }  
  6.  
  7.  
  8. //ejemplo de uso
  9.  
  10. $f1='2011/01/01'  //formato YYYY-mm-dd
  11. $f2='2011/05/10/'
  12.  
  13. $dias = diff_dte($f1,$f2);


Saludos
__________________
Recuerda que estamos aquí para orientarte, y no para hacer tu trabajo.
Si mi aporte fue de ayuda, recuerda que agradecer no cuesta nada +1

Skiper0125
  #7 (permalink)  
Antiguo 29/06/2011, 10:37
Avatar de spider_boy  
Fecha de Ingreso: diciembre-2003
Ubicación: Chile
Mensajes: 1.855
Antigüedad: 20 años, 11 meses
Puntos: 89
Respuesta: Diferencia entre dos fechas en PHP

Bueno, viendo nuevamente la página que te pasé, me di cuenta que la función date_diff se encuentra en la versión 5.3.0 de PHP, por lo tanto el error que muestras quiere decir que usas una versión inferior.

Así que podrías usar mktime o alguna función similar.
__________________
Nunca te olvidaré mi negra hermosa. Te extraño demasiado.

Etiquetas: diferencia, fechas
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

SíEste tema le ha gustado a 1 personas




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