Foros del Web » Programando para Internet » PHP »

restar fechas para obtener dias restantes.

Estas en el tema de restar fechas para obtener dias restantes. en el foro de PHP en Foros del Web. como puedo restar dos fechas Si tengo una fecha futura definida y la fecha actual del visitante. $fechafutura - $fechaactual = $faltandias...
  #1 (permalink)  
Antiguo 29/11/2014, 08:43
 
Fecha de Ingreso: noviembre-2005
Mensajes: 144
Antigüedad: 19 años, 1 mes
Puntos: 2
restar fechas para obtener dias restantes.

como puedo restar dos fechas

Si tengo una fecha futura definida y la fecha actual del visitante.

$fechafutura - $fechaactual = $faltandias
  #2 (permalink)  
Antiguo 29/11/2014, 09:14
Avatar de cecitn  
Fecha de Ingreso: noviembre-2014
Ubicación: misiones
Mensajes: 44
Antigüedad: 10 años
Puntos: 0
Respuesta: restar fechas para obtener dias restantes.

hola.! soy nueva en el foro.. tengo una duda parecida.. quiero calcular una edad en base a fecha de nacimiento registrada en la base mysql y la fecha actual. todos los codigos q tengo son para calcular x fecha fija o sea ingresando en el codigo mismo la fecha de nacimiento y eso no me sirve, en mas el codigo si lo pongo dentro de una tabla html o php no funciona.. el codigo que tengo es el siguiente:
<?php
$fechadenacimiento ="1987/01/31";
function edad($fechadenacimiento){
$dia=date("j");
$mes=date("n");
$anno=date("Y");
$dia_nac=substr($fechadenacimiento, 8, 2);
$mes_nac=substr($fechadenacimiento, 5, 2);
$anno_nac=substr($fechadenacimiento, 0, 4);
if($mes_nac>$mes){
$calc_edad= $anno-$anno_nac-1;
}else{
if($mes==$mes_nac AND $dia_nac>$dia){
$calc_edad= $anno-$anno_nac-1;
}else{
$calc_edad= $anno-$anno_nac;
}
}
return $calc_edad;
}
//echo $calc_edad;
echo edad($fechadenacimiento);
?>


la idea es q en vez de ingresar la fecha de nacimiento me tome desde la base. soy principiante en esto..
desde ya muchas graciass!!!!!!
  #3 (permalink)  
Antiguo 29/11/2014, 09:44
Avatar de cecitn  
Fecha de Ingreso: noviembre-2014
Ubicación: misiones
Mensajes: 44
Antigüedad: 10 años
Puntos: 0
Respuesta: restar fechas para obtener dias restantes.

con respecto a tu consulta. no tendrias q agregar una variable q tome el dato de la futura?
  #4 (permalink)  
Antiguo 29/11/2014, 10:34
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.774
Antigüedad: 16 años, 9 meses
Puntos: 1146
Respuesta: restar fechas para obtener dias restantes.

Hola @cecitn , veo que eres nuevo en el foro... te doy la bienvenida.

Te comento que aunque tu duda se parezca mucho a la de otro usuario debes abstenerte de plantearla en el tema de este... tu debes crear tu propio tema para no desvirtuar el tema del compañero y evitar problemas, también te invito a que leas las políticas del foro.


Respondiendo a los dos

@juansemaster tu problema es simple de solucionar, debes usar la función strtotime() para convertir ambas fechas a segundos, las divides entre ellas y posterior mente el resultado lo divides entre el numero de segundos que hay en un día.



@cecitn para tu caso aunque poco ortodoxa ya tienes el código funcional, solo debes hacer que $fechadenacimiento sea un valor obtenido de tu base de datos, ya estas haciendo la consulta a tu base de datos? que obtienes de la consulta y o que errores te arroja al ejecutar el código que muestras?

Por cierto, lo de poco ortodoxa o rudimentaria tu forma de calcular la edad es porque PHP cuenta con métodos para hacer eso de forma mas precisa y rápida

aquí te dejo el ejemplo
Código PHP:
Ver original
  1. $t1 = new DateTime('31-01-1987');//Fecha de nacimiento
  2. $t2 = new DateTime(date('d-m-Y'));//Fecha actual
  3. $t3 = $t1->diff($t2);
  4. echo $t3->format('%R %y años %m meses con %d dias');

Metodo que tambien sirve a solo tendría que invertir los datos, t1 tendria que ser la fecha actual y t2 la fecha futura

Última edición por ArturoGallegos; 29/11/2014 a las 11:05 Razón: añadir codigo de ejemplo

Etiquetas: dias, fecha, restar
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:21.