Foros del Web » Programando para Internet » PHP »

Restar Fechas

Estas en el tema de Restar Fechas en el foro de PHP en Foros del Web. Hola quisiera saber con que funciones puedo hacer para restar dos fechas. En la base tengo guardada una fecha que corresponde a un vencimiento. Lo ...
  #1 (permalink)  
Antiguo 09/02/2007, 07:44
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 18 años, 2 meses
Puntos: 9
Restar Fechas

Hola quisiera saber con que funciones puedo hacer para restar dos fechas.

En la base tengo guardada una fecha que corresponde a un vencimiento. Lo que quiero hacer es restar la fecha de la base con la fecha actual. Para poder emitir distintos tipos de alertas. Eso se puede hacer??? la base guarda las fechas en formato YYYY-MM-DD se que con la funcion date("Y-m-d") obtengo la fecha actual. Pero hasta ahi llegue .
  #2 (permalink)  
Antiguo 09/02/2007, 09:38
Avatar de lusam  
Fecha de Ingreso: enero-2007
Ubicación: Panamá
Mensajes: 56
Antigüedad: 17 años, 10 meses
Puntos: 0
Re: Restar Fechas

<?
$f1=strtotime("2007-01-29 16:27:31");
$f2=strtotime("2007-01-28 13:52:12");
$diff = $f1 - $f2;
echo "la diferencia es: ".date('d',$diff)." Dias, ".date('h',$diff)." Horas, ".date('i',$diff)." Minutos, ".date('s',$diff)." Segundos";

?>

Espero que sea lo que buscas.
Saludos
  #3 (permalink)  
Antiguo 09/02/2007, 09:42
Avatar de cyberneticos  
Fecha de Ingreso: febrero-2007
Ubicación: Pto Sta Mra, Cádiz
Mensajes: 223
Antigüedad: 17 años, 9 meses
Puntos: 3
Re: Restar Fechas

Podrías usar un substring, para pillar el año, mes y día por separado, y utilizar algunas funciones para restar meses, dias y años :

Código:
function getday ($fecha){
	$dia=substr($fecha, 0, 2);
	return $dia;
}

function getmonth ($fecha){
	$mes=substr($fecha, 3, 2);
	return $mes;
}

function getyear ($fecha){
	$year=substr($fecha, 6, 4);
	return $year;
}
y después :

Código:
function retraso ($duedate, $currentdate){
	$yeardifference=getyear($currentdate) - getyear($duedate);
	$monthdifference=getmonth($currentdate) - getmonth($duedate);
	$daydifference=getday($currentdate) - getday($duedate);

	if (  $yeardifference == 0 ){ // same year
		$totaldelay=($monthdifference*30)+$daydifference;
		return $totaldelay;
	}
	else if (  $yeardifference < 0 ){ // negative number
		$totaldelay=($yeardifference * 365)+($monthdifference*30)+$daydifference;
		return $totaldelay;
	}
	else if (  $yeardifference > 0 ){ // positive number
		$totaldelay=($yeardifference * 365)+($monthdifference*30)+$daydifference;
		return $totaldelay;
	}
}
Esto es de un programa que uso para calcular cuantos días de retraso, o adelanto tiene un cliente con respecto a una fecha de caducidad (duedate) y la fecha actual (currentdate)
  #4 (permalink)  
Antiguo 09/02/2007, 09:45
Avatar de cyberneticos  
Fecha de Ingreso: febrero-2007
Ubicación: Pto Sta Mra, Cádiz
Mensajes: 223
Antigüedad: 17 años, 9 meses
Puntos: 3
Re: Restar Fechas

Bueno, si estas guardando las fechas en formato DATE, ignora lo mío pues la solución de Lusam es la ideal,.. pero si ya tienes una base de datos llena en modo string, lo mio puede darte una idea.

Gracias lusam
  #5 (permalink)  
Antiguo 12/02/2007, 06:39
Avatar de cala932  
Fecha de Ingreso: septiembre-2006
Ubicación: San Juan-Argentina
Mensajes: 902
Antigüedad: 18 años, 2 meses
Puntos: 9
Re: Restar Fechas

Gracias por los post. Pero encontre una mas adecuada para lo que yo quiero en FAQ de php del foro.

$fecha_actual=date("Y-m-d");
echo"Fecha Actual: $fecha_actual ";
$var = explode('-',$fecha_actual);
echo "$var[2]-$var[1]-$var[0]";
Con la funcion explode se puede trabajar cada parte de la fecha por separado, donde dia mes y año constituyen las posiciones dentro del array respectivamente. De esa manera puedo restar dias con dias, mes con meses etc.
Saludos .
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 12:51.