Ver Mensaje Individual
  #3 (permalink)  
Antiguo 11/09/2013, 07:39
Avatar de loncho_rojas
loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: como saber cuantos días tiene mes getMonth();

Esta es una función que me calcula diferencia entre 2 fechas, tomando en cuenta años biciestos, que al Javascript se le escapan... no se si te soluciona la vida, pero te puede servir para marearte una rato y ver su comportamiento..

Código Javascript:
Ver original
  1. // JavaScript Document
  2. function mostrarDias(){
  3.    
  4.     var fechaInicio = document.getElementById("fechaInicio").value;
  5.     var fechaFin = document.getElementById("fechaFin").value;
  6.  
  7.     if (fechaInicio.length != 10 || fechaFin.length != 10){
  8.         document.getElementById("diasDisfrutados").value = 0;
  9.     }
  10.    
  11.     else{
  12.        
  13.         //Separamos las fechas en dias, meses y años
  14.         var diaInicio=fechaInicio.substring(0,2);
  15.         var mesInicio=fechaInicio.substring(3,5);
  16.         var anoInicio=fechaInicio.substring(6,10);
  17.        
  18.         var diaFin=fechaFin.substring(0,2);
  19.         var mesFin=fechaFin.substring(3,5);
  20.         var anoFin=fechaFin.substring(6,10);
  21.            
  22.         //Los meses empiezan en 0 por lo que le restamos 1
  23.         mesFin = mesFin -1;
  24.         mesInicio = mesInicio -1;
  25.        
  26.         //Creamos una fecha con los valores que hemos sacado
  27.         var fInicio =  new Date(anoInicio,mesInicio,diaInicio);
  28.         var fFin =  new Date(anoFin,mesFin,diaFin);
  29.        
  30.         diasTotal = 0;
  31.    
  32.         if(fFin>fInicio){
  33.            
  34.             //Para sumarle 365 días tienen que haber 2 años de diferencia
  35.             //Si no solamente sumo los días entre meses
  36.             anoInicio++;
  37.             while(anoFin>anoInicio){
  38.            
  39.             alert("Entro aquí si hay dos años de diferencia");
  40.            
  41.             if(esBisiesto(anoFin))
  42.             {
  43.                 dias_e_anio=366;
  44.             }
  45.             else
  46.                 {
  47.                     dias_e_anio=365;
  48.                 }
  49.             diasTotal = diasTotal + dias_e_anio;
  50.             anoFin--;
  51.             }
  52.            
  53.             //Para sumarle los días de un mes completo, tengo que ver que haya diferencia de 2 meses
  54.             mesInicio++;           
  55.             while(mesFin>mesInicio){
  56.                 dias_e_mes = getDays(mesFin-1,anoFin);
  57.                 diasTotal = diasTotal + dias_e_mes;
  58.                 mesFin--;
  59.             }
  60.            
  61.             //Solamente falta sumar los días
  62.             mesInicio--;
  63.             if(mesInicio==mesFin){
  64.                 diasTotal=diaFin-diaInicio+1;
  65.             }
  66.             else{
  67.                
  68.                 //Saco los días desde el mesInicio hasta fin de mes
  69.                 dias_e_mes=getDays(mesInicio,anoInicio);
  70.                 diasTotal = diasTotal + (dias_e_mes-diaInicio) +1;
  71.                 //ahora saco los días desde el principio de mesFin hasta el día
  72.                 diasTotal = diasTotal + parseInt(diaFin);
  73.                
  74.             }          
  75.         }
  76.        
  77.         //Si la fechaFin es mayor
  78.         else if (fechaFin<fechaInicio){
  79.             alert("La fecha de fin no puede ser mayor que la fecha de inicio");
  80.             diasTotal=0;       
  81.         }
  82.        
  83.         //Si las fechas son iguales
  84.         else{
  85.             diasTotal = 1;
  86.         }
  87.  
  88.     }
  89. }
  90.  
  91. function esBisiesto(ano) {
  92.     if (ano % 4 == 0)
  93.     return true
  94.     /* else */
  95.     return false
  96. }
  97.  
  98. function getDays(month, year) {
  99.  
  100.     var ar = new Array(12)
  101.     ar[0] = 31 // Enero
  102.     if(esBisiesto)
  103.         {
  104.             ar[1]=29
  105.         }
  106.     else
  107.         {
  108.             ar[1]=28
  109.         }
  110.     ar[2] = 31 // Marzo
  111.     ar[3] = 30 // Abril
  112.     ar[4] = 31 // Mayo
  113.     ar[5] = 30 // Junio
  114.     ar[6] = 31 // Julio
  115.     ar[7] = 31 // Agosto
  116.     ar[8] = 30 // Septiembre
  117.     ar[9] = 31 // Octubre
  118.     ar[10] = 30 // Noviembre
  119.     ar[11] = 31 // Diciembre
  120.  
  121.     return ar[month];
  122.     }
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...