JavaScript - para calcular mes ademas del año

   
Vista:

para calcular mes ademas del año

Publicado por zendi (77 intervenciones) el 15/11/2014 20:03:47
Tengo esta funcion en la cual hace falta nada mas que colocar el calculo para cuando sea el mes (esto es para calcular la edad incluyendo el mes de edad y el año de edad valga la redundancia)

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
46
47
48
49
function calcularEdad()
{
    var fecha=document.getElementById("user_date").value;
 //la fecha que entra el usuario
        var values=fecha.split("/");
        var dia = values[0];
        var mes = values[1];
        var ano = values[2];
        fecha=	dia+"/"+mes	+"/"+ano;
 
    if(validate_fecha(fecha)==true)
    {
        // Si la fecha es correcta, calculamos la edad
        var values=fecha.split("/");
 
		var dia = values[0];
        var mes = values[1];
        var ano = values[2];
        // cogemos los valores actuales
        var fecha_hoy = new Date();
        var ahora_ano = fecha_hoy.getYear();
        var ahora_mes = fecha_hoy.getMonth();
        var ahora_dia = fecha_hoy.getDate();
 
        // realizamos el calculo
        var edad = (ahora_ano + 1900) - ano;
		var mes = (ahora_mes - mes);
 
        if ( ahora_mes < (mes - 1))
        {
            edad--;
        }
        if (((mes - 1) == ahora_mes) && (ahora_dia < dia))
        {
            edad--;
        }
        if (edad > 1900)
        {
            edad -= 1900;
        }
 
        document.getElementById("result").innerHTML="Tiene "+edad+" años";
    }
	else
	{
        document.getElementById("result").innerHTML="La fecha "+fecha+" es incorrecta";
    }
 
}




pero tengo aqui la del mes pero he intentado de muchas formas colocandola y no me funciona, quien pudiera ayudarme a ubicarla? se los agradezco. Salven al predicador.

1
2
3
4
5
6
7
8
9
10
if(edad==0)
		{
		   edad=ahora_mes-mes;
		   console.log(ahora_mes+"-"+mes);
		   document.getElementById("result").innerHTML="Tienes "+edad+" meses";
		   }
		   else
		   {
		   document.getElementById("result").innerHTML="Tienes "+edad+" años"; }
		}
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
Imágen de perfil de xve

para calcular mes ademas del año

Publicado por xve (1595 intervenciones) el 15/11/2014 22:43:08
Hola Zendi, la manera correcta es:
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
function calcularEdad()
{
    var fecha=document.getElementById("user_date").value;
    if(validate_fecha(fecha)==true)
    {
        // Si la fecha es correcta, calculamos la edad
        var values=fecha.split("-");
        var dia = values[2];
        var mes = values[1];
        var ano = values[0];
 
        // cogemos los valores actuales
        var fecha_hoy = new Date();
        var ahora_ano = fecha_hoy.getYear();
        var ahora_mes = fecha_hoy.getMonth();
        var ahora_dia = fecha_hoy.getDate();
 
        // realizamos el calculo
        var edad = (ahora_ano + 1900) - ano;
        if ( ahora_mes < (mes - 1))
        {
            edad--;
        }
        if (((mes - 1) == ahora_mes) && (ahora_dia < dia))
        {
            edad--;
        }
        if (edad > 1900)
        {
            edad -= 1900;
        }
 
        if(edad==0)
        {
            edad=ahora_mes-mes;
            document.getElementById("result").innerHTML="Tienes "+edad+" meses";
        }else{
            document.getElementById("result").innerHTML="Tienes "+edad+" años";
        }
    }else{
        document.getElementById("result").innerHTML="La fecha "+fecha+" es incorrecta";
    }
}
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

para calcular mes ademas del año

Publicado por zendi (77 intervenciones) el 17/11/2014 00:29:35
hola xve, ahora da este mensaje

1
Tienes NaN años

NaN significa Not a Number
Jamas habia tenido tanto lio con esto.
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
Imágen de perfil de xve

para calcular mes ademas del año

Publicado por xve (1595 intervenciones) el 17/11/2014 09:01:55
Que fecha has puesto?
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

para calcular mes ademas del año

Publicado por zendi (77 intervenciones) el 18/11/2014 01:15:05
bueno el formato de fecha que pongo es de esta manera 01/02/2000
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
Imágen de perfil de xve

para calcular mes ademas del año

Publicado por xve (1595 intervenciones) el 18/11/2014 10:26:29
Hola Zendi, he puesto esa fecha, y me indica que tengo 14 años... no me da el error que comentas (Tienes NaN años)¿?
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

para calcular mes ademas del año

Publicado por zendi (77 intervenciones) el 18/11/2014 13:00:19
Hola Xve, si en realidad eso es lo que aparece o imprime, bastante extraño.

Sera que habra algo de estas funciones que afecta en algo? Esta es la que formatea o crea la mascara para separar los dias meses y años

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
var patron = new Array(2,2,4)
var patron2 = new Array(1,3,3,3,3)
function mascara(d,sep,patron,nums)
{
if(d.valant != d.value){
	val = d.value
	largo = val.length
	val = val.split(sep)
	val2 = ''
	for(r=0;r<val.length;r++){
		val2 += val[r]
	}
	if(nums){
		for(z=0;z<val2.length;z++){
		  if(isNaN(val2.charAt(z))){
			letra = new RegExp(val2.charAt(z),"g")
			val2 = val2.replace(letra,"")
		   }
		}
	}
	val = ''
	val3 = new Array()
	for(s=0; s<patron.length; s++){
		val3[s] = val2.substring(0,patron[s])
		val2 = val2.substr(patron[s])
	}
	for(q=0;q<val3.length; q++){
		if(q ==0){
			val = val3[q]
		}
		else{
			if(val3[q] != ""){
				val += sep + val3[q]
			}
		}
	}
	d.value = val
	d.valant = val
	}
}

esta es la que valida la fecha
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
function validate_fecha(fecha)
{
    //var patron=new RegExp("^(19|20)+([0-9]{2})([/-])([0-9]{1,2})([-])([0-9]{1,2})$");
    var patron=new RegExp("^([0-9]{1,2})([/])([0-9]{1,2})([/])(19|20)+([0-9]{2})$");
//	alert(fecha+"hola2");
//	alert(patron);	
    if(fecha.search(patron)==0)
    { //alert("hola3");
        var values=fecha.split("/");
        if(isValidDate(values[0],values[1],values[2]))
        {//alert("hola4");
            return true;
        }
    }
	//alert("hola5");
    return false;
}
 
function isValidDate(day,month,year)
{
    var dteDate;
 
    // En javascript, el mes empieza en la posicion 0 y termina en la 11 
    //   siendo 0 el mes de enero
    // Por esta razon, tenemos que restar 1 al mes
    month=month-1;
    // Establecemos un objeto Data con los valore recibidos
    // Los parametros son: año, mes, dia, hora, minuto y segundos
    // getDate(); devuelve el dia como un entero entre 1 y 31
    // getDay(); devuelve un num del 0 al 6 indicando siel dia es lunes,
    //   martes, miercoles ...
    // getHours(); Devuelve la hora
    // getMinutes(); Devuelve los minutos
    // getMonth(); devuelve el mes como un numero de 0 a 11
    // getTime(); Devuelve el tiempo transcurrido en milisegundos desde el 1
    //   de enero de 1970 hasta el momento definido en el objeto date
    // setTime(); Establece una fecha pasandole en milisegundos el valor de esta.
    // getYear(); devuelve el año
    // getFullYear(); devuelve el año
    dteDate=new Date(year,month,day);
    //alert(((day==dteDate.getDate()) && (month==dteDate.getMonth()) && (year==dteDate.getFullYear())));
    //Devuelva true o false...
    return ((day==dteDate.getDate()) && (month==dteDate.getMonth()) && (year==dteDate.getFullYear()));
}

y esta la que calcula la edad

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
function calcularEdad()
{
var fecha=document.getElementById("user_date").value; if(validate_fecha(fecha)==true) {
// Si la fecha es correcta, calculamos la edad 
var values=fecha.split("-");
var dia = values[2];
var mes = values[1];
var ano = values[0]; // cogemos los valores actuales 
var fecha_hoy = new Date();
var ahora_ano = fecha_hoy.getYear();
var ahora_mes = fecha_hoy.getMonth();
var ahora_dia = fecha_hoy.getDate(); // realizamos el calculo 
var edad = (ahora_ano + 1900) - ano;
if ( ahora_mes < (mes - 1))
{
edad--;
}
  if (((mes - 1) == ahora_mes) && (ahora_dia < dia))
   {
    edad--;
   }
if (edad > 1900)
 {
 edad -= 1900;
 }
      if(edad==0)
       {
	    edad=ahora_mes-mes;
	    console.log(ahora_mes+"-"+mes);
	    document.getElementById("result").innerHTML="Tienes "+edad+" meses";
       }
       else
       {
         document.getElementById("result").innerHTML="Tienes "+edad+" años";
       }
  }
  else{
   document.getElementById("result").innerHTML="La fecha "+fecha+" es incorrecta";
  }
}
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