Foros del Web » Programando para Internet » PHP »

diferencia entre 2 fechas en dias

Estas en el tema de diferencia entre 2 fechas en dias en el foro de PHP en Foros del Web. Tengo esta funcion para obtener la diferencia en dias de 2 fechas... funciona bien exepto para este caso: Código PHP: // deberia devolver 30 dias echo  fechadif ( '2010-10-18' ...
  #1 (permalink)  
Antiguo 17/05/2010, 13:44
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Pregunta diferencia entre 2 fechas en dias

Tengo esta funcion para obtener la diferencia en dias de 2 fechas...

funciona bien exepto para este caso:
Código PHP:
// deberia devolver 30 dias
echo fechadif('2010-10-18','2010-09-18','dias');

// ejemplo que si funciona devuelve 31
echo fechadif('2010-08-18','2010-07-18','dias'); 
me trae 29 dias... cuando en realidad es 30 dias... en el caso numero 1


Código PHP:
function fechadif($date1,$date2,$tipo){
// aaaa-mm-dd
$s strtotime($date1)-strtotime($date2);
// la mitad del tiempo en segundos
$difsegundos $s;
$difsegundosm $difsegundos;
$difminutom=$difsegundos/60;
$difhoram $difminutom/60;
$difdiam$difhoram/24;
// todo como predeterminado
$hora=date("H:i:s",$difsegundos);
$diferencia $hora;
if(
$tipo == 'segundos'){
    
$diferencia $difsegundosm;
}
if(
$tipo == 'minutos'){
    
$diferencia $difminutom;
}
if(
$tipo == 'horas'){
    
$diferencia $difhoram;
}
if(
$tipo == 'dias'){
    
$diferencia $difdiam;
}
$diferencia=intval($diferencia);
return 
$diferencia;

alguna idea de donde esta el error?
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #2 (permalink)  
Antiguo 17/05/2010, 13:47
Avatar de Vun
Vun
Colaborador
 
Fecha de Ingreso: agosto-2009
Ubicación: Benalmádena, España
Mensajes: 2.265
Antigüedad: 14 años, 8 meses
Puntos: 150
Respuesta: diferencia entre 2 fechas en dias

¿Y en horas cuanto te devuelve?
  #3 (permalink)  
Antiguo 17/05/2010, 13:54
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: diferencia entre 2 fechas en dias

y si la acortas un poco la funcion :P?

Código PHP:
Ver original
  1. function fechadif($fecha1, $fecha2){
  2.     return date("d", date("U", strtotime($fecha1)) - date("U", strtotime($fecha2)));
  3. }
  4. echo fechadif('2010-10-18','2010-09-18');

la hice recien pero almenos devuelve 30 :P

saludos!
__________________
More about me...
~ @rhyudek1
~ Github
  #4 (permalink)  
Antiguo 17/05/2010, 14:14
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Respuesta: diferencia entre 2 fechas en dias

Cita:
Iniciado por Hidek1 Ver Mensaje
y si la acortas un poco la funcion :P?

Código PHP:
Ver original
  1. function fechadif($fecha1, $fecha2){
  2.     return date("d", date("U", strtotime($fecha1)) - date("U", strtotime($fecha2)));
  3. }
  4. echo fechadif('2010-10-18','2010-09-18');

la hice recien pero almenos devuelve 30 :P

saludos!
Probe la funcion que me diste pero no funciona con estos 2 casos:
Código PHP:

echo fechadif('2010-05-17','2010-06-18','dias'); // deberia devolver 32 dias - pero devuelve 29

echo fechadif('2010-06-18','2010-05-17','dias'); // deberia devolver 32 dias - pero devuelve 01 
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #5 (permalink)  
Antiguo 17/05/2010, 14:17
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: diferencia entre 2 fechas en dias

prueba ahora...
di vuelta las fechas
Código PHP:
Ver original
  1. function fechadif($fecha1, $fecha2){
  2.     return date("d", date("U", strtotime($fecha2)) - date("U", strtotime($fecha1)));
  3. }
__________________
More about me...
~ @rhyudek1
~ Github
  #6 (permalink)  
Antiguo 17/05/2010, 14:21
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: diferencia entre 2 fechas en dias

También sugiero usar la clase DateTime, hay un método que te ayuda a lograrlo, mira este ejemplo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 17/05/2010, 14:48
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Respuesta: diferencia entre 2 fechas en dias

Hidek1: lo unico que ahi paso es que cambiaste el orden nomas sigue dando el mismo problema pero con distinto orden de resultado...

abimaelrc: donde puedo bajar esa clase??? por que probe copiar el codigo de esa pagina y no funciona....

creo que el problema de la funcion se puede deber al cambio de hora verano/invierno... o algo asi...

alguna idea de como puedo hacerlo para obtener esa diferencia... ?
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #8 (permalink)  
Antiguo 17/05/2010, 14:55
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 11 meses
Puntos: 1517
Respuesta: diferencia entre 2 fechas en dias

La clase ya viene integrada en PHP desde la versión 5.2. Para más información http://www.php.net/manual/en/datetime.installation.php
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 17/05/2010, 15:01
Avatar de andrewp  
Fecha de Ingreso: agosto-2003
Ubicación: Barcelona
Mensajes: 1.160
Antigüedad: 20 años, 8 meses
Puntos: 5
Respuesta: diferencia entre 2 fechas en dias

Hola Farra...

Hace poco me ayudaron a perfeccionar un script que da la diferencia de días entre dos fechas. Échale un vistazo a este POST, quizá te pueda ser de utilidad.

Saludos
__________________
Andrew :P
  #10 (permalink)  
Antiguo 18/05/2010, 09:00
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Respuesta: diferencia entre 2 fechas en dias

Probe el codigo ese y tiene un error... trae 29 dias cuando usas septiembre y octubre como el ejemplo de abajo.. debe ser un error de la zona horaria por el cambio de hora de verano/invierno....

Código PHP:
// Los valores llegan de MySQL en el formato de las variables:
$time1'2010-09-18';
$time2='2010-10-18'

// Paso el timestamp para ambas variables:
$epoch1 strtotime($time1);
$epoch2 strtotime($time2); 

// Resto las dos fechas para lo que tengo que partir de la base
// en segundos:
$diff_seconds $epoch2-$epoch1// obtengo 31449600
$diff_days floor($diff_seconds/86400); //obtengo 364

echo "hay <b>".$diff_days."</b> dias entre las dos fechas.<br><br>"
alguna idea de como hacer para evitar ese error de cambio horario? u otra forma de hacer el script para que no le afecte eso...?
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #11 (permalink)  
Antiguo 18/05/2010, 09:07
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 1 mes
Puntos: 20
Respuesta: diferencia entre 2 fechas en dias

Probe el otro ejemplo tambien con la class.datetime

y me devuelve 0 dias.... cuando deberia devolver 30
Código PHP:
#
$fecha1='2010-10-18';
$fecha2='2010-09-18';
#
$datetime1 = new DateTime($fecha1);
#
$datetime2 = new DateTime($fecha2);
#
$interval $datetime1->diff($datetime2);
#
echo $interval->format('%d días'); 
__________________
Firma:
Es mas dificil para el mono entender que el hombre desciende de el....

PD: Siempre doy karma al que me da una buena respuesta... ;0)
  #12 (permalink)  
Antiguo 18/05/2010, 09:13
Avatar de LuZBinG  
Fecha de Ingreso: enero-2008
Mensajes: 407
Antigüedad: 16 años, 3 meses
Puntos: 5
Respuesta: diferencia entre 2 fechas en dias

a fuerzas tiene que ser con PHP? lo podrias hacer directamente con MYSQL con datediff y obtendrias la diferencias en dias
__________________
LuZbIng

Etiquetas: dias, 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




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