PHP - calcular edad en php

 
Vista:
sin imagen de perfil

calcular edad en php

Publicado por johanna (9 intervenciones) el 27/09/2013 21:33:35
holas
debo calcular la edad en una caja de texto en php
como hago para restarle la fecha de nacimiento (esta fecha la capturo de un date de html5) con la fecha de sistema.
gracias
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

calcular edad en php

Publicado por Mari Carmen (145 intervenciones) el 28/09/2013 05:46:24
En PHP CLI:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
<?php
date_default_timezone_set('UTC');
 
echo "Escribe la fecha de tu nacimiento(dia/mes/año):";
//Pedimos valores por la consola.
$fecha=trim(fgets(STDIN));
 
//Primera verificación del formato.
if(!preg_match("/^\d{1,2}\/\d{1,2}\/\d{2,4}$/", $fecha)) {
	die("Formato Incorrecto.\n");
}
//Separamos el string en variables.
list($dia,$mes,$ano)=explode("/", $fecha);
//Verificamos que los valores son correctos.
if(!checkdate($mes, $dia, $ano)) {
	die("Los Valores introducidos no son correctos.\n");
}
//Timestamp de la fecha que se inserto.
$cumple=mktime(0, 0, 0, $mes, $dia, $ano);
//Timestamp de el momento actual.
$ahora=time();
 
//Segundos de vida que tenemos.
$edad=$ahora-$cumple;
 
//Años que tenemos. la parte entera son los años, la parte decimal son meses y días.
$anos=$edad/60/60/24/365;
//El resto es la parte decimal y para ello restamos la parte entera a $años.
$a_resto=$anos-(int)$anos;
//Si multiplicamos el resto *12 nos da los meses la parte entera y la parte decimal que queda son los días.
$meses=$a_resto*12;
//El resto igual que en $a_resto pero con meses. Así que $m_resto es la parte decimal en donde están los días.
$m_resto=$meses-(int)$meses;
//Multiplicamos el resto *30 y nos quedamos con la parte entera que son los días.
$dias=(int)($m_resto*30);
 
//Nos quedamos solo con la parte entera.
$anos=(int)$anos;
$meses=(int)$meses;
 
//Visualizamos el resultado.
echo "$anos año".(($anos>1)?"s":"").", $meses mes".(($meses>1)?"es":"")." y $dias dia".(($dias>1)?"s":"").". \n";
 
//PD: No puedes ser mucho mas exacto en las mediciones ya que la gran mayoría de gente no sabe la hora exacta y los segundos exactos en los que ha nacido.
?>

Si es para una web entonces mejor que uses javascript. Recoge el valor del campo o los campos y operas con ellos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil

calcular edad en php

Publicado por johanna (9 intervenciones) el 28/09/2013 15:12:50
hola y gracias por el codigo
pero ahora como hago para que al momento que el usuario en el calendario seleccione su fecha de nacimiento automaticamente me aparezca la edad en la caja de texto que he colocado al lado de ese calendario, con que funcion o como ????
gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

gracias

Publicado por johanna (9 intervenciones) el 28/09/2013 16:46:52
Hola Mari Carmen

gracias por tu colaboracion y pronto auxilio
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

calcular edad en php

Publicado por johanna (9 intervenciones) el 29/09/2013 17:21:47
Mari dos preguntas

en el codigo en esta parte
date_default_timezone_set('UTC');

echo "Escribe la fecha de tu nacimiento(dia/mes/año):";
//Pedimos valores por la consola.
$fecha=trim(fgets(STDIN));

que es ('UTC')

Cuando dices pedimos valores por consola $fecha=trim(fgets(STDIN)); aqui en esta parte como coloco el dato de la fecha de nacimeinto ya que esta fecha la pido desde un date o calendario que esta dentro de una caja de text
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

calcular edad en php

Publicado por Mari Carmen (145 intervenciones) el 30/09/2013 23:43:47
UTC son las siglas de Tiempo universal coordinado ref:http://es.wikipedia.org/wiki/Tiempo_universal_coordinado.

Yo uso PHP desde la consola de comandos(ventanita negra o CLI). Para hacer una pausa y esperar a la entrada de datos desde el teclado se hace un fgets(). STDIN es la entrada (IN) estándar (STD) en mi caso el teclado.
En esencia mi código no vale para paginas web de donde las entradas vienen por formularios.
Pero lo que pedías al inicio de este post es como se calcula la edad en PHP por lo que mi código puede servirte para adaptarlo a tus necesidades.

Para tu ultima pregunta me faltan datos. Necesito saber como es el calendario.
Ya te comente que seria mas sencillo hacerlo en javascript. Si quieres mas ayuda debes darnos mas datos. Lo mejor que pongas el código aquí para que podamos decirte que puedes cambiar y por que.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar