javascript Calendario

Iniciado por Dawman, 17 Octubre 2013, 19:23 PM

0 Miembros y 1 Visitante están viendo este tema.

Dawman

Hola a todos,

Estoy realizando un trabajo que consiste en crear un calendario que a través de una lista select te muestra el mes seleccionado.
de momento he logrado hacer que me ejecute el mes en curso correctamente.
falta poner la lista select para escoger el mes... en este punto no tengo problema, no esta hecho porque sigo provando el codigo...

El problema lo tengo con la variable "aux"... que sirve para controlar el primer dia del mes, pero tal como lo tengo, poniedno una lista select me daria siempre el mismo resultado.

me pregunta... alguien sabe como hacer para que seleccionando un mes de una lista te muestre el primer dia del mes??

O simplemente si alguien me sabria decir la manera de calcular el primer dia del mes sea cual sea el mes!
muchas gracias...

PD: los comentarios y variables estan en catalan, espero que no supongan ningun inconveniente

Código (javascript) [Seleccionar]

<html>
<head>
<title> Pràctica II </title>
<!--<link rel="stylesheet" href="css.css"></style>!-->
<meta HTTP-EQUIV="CONTENT-TYPE" content="text/html; charset=UTF-8"/>
   </head>      
<body>              
<script>
       Fons       = "#FFCC99";    //color de la cel·la entre setmana      
       FonsCapSet  = "#FEBF7D";    //color de la cel·la caps de setmana
       FonsTitol   = "#003366";    //color de fons títol
       FonsDiesSetmana = "#DB9000";    //color de fons para dies de la setmana
       Today = "#000062";
       Buits ="#C0C0C0";
       colorLinea = "#CAFFFF";    
     // Array per declarar els dies de la setmana...
     var diaSetmana = new Array()            
       diaSetmana[0]="Dilluns"
       diaSetmana[1]="Dimarts"
       diaSetmana[2]="Dimecres"
       diaSetmana[3]="Dijous"
       diaSetmana[4]="Divendres"
       diaSetmana[5]="Dissabte"
       diaSetmana[6]="Diumenge"  
     
     // Array per declarar els mesos del any...
     var Mesos = new Array()
       Mesos[0]  = "GENER";
       Mesos[1]  = "FEBRER";
       Mesos[2]  = "MARÇ";
       Mesos[3]  = "ABRIL";
       Mesos[4]  = "MAIG";
       Mesos[5]  = "JUNY";
       Mesos[6]  = "JULIOL";
       Mesos[7]  = "AGOST";
       Mesos[8]  = "SETEMBRE";
       Mesos[9]  = "OCTUBRE";
       Mesos[10] = "NOVEMBRE";
       Mesos[11] = "DESEMBRE";
     // Array per declarar el nombre de dies de cada mes...
     var DiasMes = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
     var data = new Date();
     avui=data.getDate();
     //document.write("Avui=(getDate) : "+avui+"<br>");
     mes =data.getMonth();    
     //document.write("mes= "+mes+"<br>");
     nomDia=data.getDay()-1;
     //document.write("nomDia= (getDay) : "+nomDia+"<br>");
     any=data.getFullYear();
     //document.write("any= "+any+"<br>");      
     aux=(avui-nomDia+1)%7;
     //document.write("aux= "+aux+"<br>");
     nombreSetmanes=Math.ceil((DiasMes[mes]-aux+1)/7);
     //document.write("Nombre de setmanes="+nombreSetmanes+"<br>");

     document.write("<table cellpadding=\"0\" cellspacing=\"0\" width=\"100%\" border=\"1\">");
     document.write("<tr>");
     document.write("<th colspan=\"7\" bgcolor=\""+FonsTitol+"\">"+ Mesos[mes]+" </th></tr>");
     document.write("<tr>");
     for(i=0;i<7;i++)
     {
        document.write("<td bgcolor=\""+FonsDiesSetmana+"\">"+diaSetmana[i]+"</td>");        
     }
     document.write("</tr>");
     // Per generar els dies de la setmana...
     var m=1;
     var k=1;
     while(m<=DiasMes[mes])
     {
       for(i=0;i<nombreSetmanes;i++)
       {
         document.write("<tr>");
       
         
           for(j=0; j<7;j++)
           {
             if (j<aux && i==0)
             document.write("<td bgcolor="+ Buits +"></td>");

             else if(j==aux && i==0)          
             {
               document.write("<td bgcolor="+ Fons +">"+m+"</td>");
               m++;
             }

             else if (j==5 || j==6)
               {
                document.write("<td bgcolor="+FonsCapSet+"><font color=#FF0000>"+m+"</font></td>");
               m++;
               }    
             else if (m==avui)
             {
                document.write("<td bgcolor="+ Today+"><font color=#FFFFFF>"+m+"</font></td>");
               m++;
             }              
             else
             {
               document.write("<td bgcolor="+ Fons +">"+m+"</td>");
               m++;
             }  
             if (m>DiasMes[mes])      
             {
               j++;
               while(j<7)
               {                  
                  document.write("<td bgcolor="+ Buits +">"+k+"</td>");
                  j++;  
                  k++;
               }  
             }
           }
         
         document.write("</tr>");
       }
     }    
               
    //Fí de taula...
     document.write("</table>");

     //document.write(diaSetmana[nomDia]);
  </script>
   </body>
</html>



Almapa

#1
A ver, si el calendario es tan solo para este año (tal y como veo en la variable DiasMes), sabiendo que en enero el dia 1 era martes, o sea, diaSetmana[1], podrías utilizar el siguiente código.
Código (javascript) [Seleccionar]

var aux=1; //aux es la variable que tiene el índice del día de la semana correspondiente al día 1 del mes.
for(var i=0;i<Númerodelmesacalcular;i++){aux=aux+DiasMes[i];} //Númerodelmesacalcular sería el índice del mes que quieres calcular
aux=aux%7;


En el caso de querer utilizar el calendario para cualquier año ya tendrías que buscar algoritmos más elaborados para el cálculo de cualquier día como el que aparece aquí:

http://www.ehowenespanol.com/calcular-dia-semana-cualquier-ano-como_25602/

Un saludo

Dawman

Muchas gracias Alampa...
al final he visto que con el "setDate(1)" te da automaticamente el primer dia del mes...
gracias de nuevo!