Foros del Web » Programando para Internet » PHP »

Calculo de fechas php problema con previas a 1902

Estas en el tema de Calculo de fechas php problema con previas a 1902 en el foro de PHP en Foros del Web. Buenas a todos, tengo un problema con las fechas que quiero ver si alguien me ayuda si es que estoy haciendo algo mal o es ...
  #1 (permalink)  
Antiguo 27/09/2013, 14:06
 
Fecha de Ingreso: septiembre-2013
Mensajes: 4
Antigüedad: 10 años, 7 meses
Puntos: 0
Pregunta Calculo de fechas php problema con previas a 1902

Buenas a todos, tengo un problema con las fechas que quiero ver si alguien me ayuda si es que estoy haciendo algo mal o es un bug o una limitación de Php..

Tengo los datos de personas en una base mysql, que la llamo mediante $consulta

Lo que hago es restar la fecha de defunción menos la fecha de nacimiento y así calculo que edad tuvo a la hora de morir..

Todo funciona perfecto con la función que abajo les dejo:

function calculo_edad()
{
global $consulta;
$Dias = explode("-", $consulta['Nacimiento'], 3);
$Dias = mktime(0,0,0,$Dias[1],$Dias[0],$Dias[2]);

$Defuncion = explode("-", $consulta['Defuncion'], 3);
$Defuncion = mktime(0,0,0,$Defuncion[1],$Defuncion[0],$Defuncion[2]);

$Edad= (int)(($Defuncion-$Nacimiento)/31556926);
return $Edad;
}

El problema arrancó cuando tuve una persona que era nacida en 1890 y me daba cualquier cosa..

ejemplo si resto 01/01/1902 - 27/09/2013 me devuelve Edad: 111 años OK!

pero si pongo 01/01/1901 - 27/09/2013 me da 43 años en vez de 112 años..

No se si alguien sabe que puedo estar haciendo mal o si alguien sabe alguna limitacion con las fechas en php que no puedo restar nada < a 1902..

Saludos y Grax!
  #2 (permalink)  
Antiguo 27/09/2013, 14:21
 
Fecha de Ingreso: julio-2013
Ubicación: México
Mensajes: 361
Antigüedad: 10 años, 8 meses
Puntos: 55
Respuesta: Calculo de fechas php problema con previas a 1902

Hola, el problema es la funcion mktime(); cambiala.
Revisa el Objeto DateTime en el manual.

SAludos
  #3 (permalink)  
Antiguo 27/09/2013, 14:28
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: Calculo de fechas php problema con previas a 1902

Razón por la que te da ese error es
Cita:
The valid range of a timestamp is typically from Fri, 13 Dec 1901 20:45:54 GMT to Tue, 19 Jan 2038 03:14:07 GMT. (These are the dates that correspond to the minimum and maximum values for a 32-bit signed integer). However, before PHP 5.1.0 this range was limited from 01-01-1970 to 19-01-2038 on some systems (e.g. Windows).
Eso es para la versión mayor o igual a 5.1.0. Para mayores fechas, haz lo que te recomendó Erick de usar DateTime que te permite trabajar con fechas de hasta 292 mil millones hacia el futuro o pasado, por el "background" que trabaja con formato de 64 bits. Para más información en el manual de PHP vas a ver más detalle.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #4 (permalink)  
Antiguo 27/09/2013, 14:51
 
Fecha de Ingreso: septiembre-2013
Mensajes: 4
Antigüedad: 10 años, 7 meses
Puntos: 0
Respuesta: Calculo de fechas php problema con previas a 1902

Excelente tu señalización..

Bueno quedó asi, chiquito y creo que mejor.. ahora uso también la funcion date_diff que me resulto buenisima..

function calcular_edad()
{
global $consulta;

$Fecha1= date_create($consulta['Nacimiento']);
$Fecha2 = date_create($consulta['Defuncion']);
$Resultado= date_diff($Fecha1, $Fecha2 );
return $Resultado->format('%Y%');
}

Lo dejo por si alguien le sirve.. si quiciera calcular la edad que tiene, solo tendria que en vez de dar la fecha de defunsión.. dar la fecha de hoy.. asi de simple :D

Saludos
  #5 (permalink)  
Antiguo 29/11/2014, 11:11
Avatar de cecitn  
Fecha de Ingreso: noviembre-2014
Ubicación: misiones
Mensajes: 44
Antigüedad: 9 años, 4 meses
Puntos: 0
Respuesta: Calculo de fechas php problema con previas a 1902

hola como se hace para remplazar defuncion x actual del servidor?? soy nueva en esto y hace un largo tiempo estoy queriendo sacar este inconveniente..
gracias!

Etiquetas: calculo, fecha, mysql
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 18:25.