elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.
 
Inicio Ayuda Buscar Ingresar Registrarse
28 Mayo 2012, 02:02  


Tema destacado: Recuerda que debes registrarte en el foro para poder participar (preguntar y responder)

+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java (Moderadores: Debci, Leyer)
| | | |-+  [GregorianCalendar] ¿Como saber cual es el primer día del mes?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [GregorianCalendar] ¿Como saber cual es el primer día del mes?  (Leído 425 veces)
klaine

Desconectado Desconectado

Mensajes: 112



Ver Perfil WWW
[GregorianCalendar] ¿Como saber cual es el primer día del mes?
« en: 23 Agosto 2011, 01:41 »

Hola, estoy haciendo una aplicación para manejar horarios, la gui la hice de tal forma que al pasarle desde donde hasta donde son los días del mes de x año me genera una ventana con los 42 JLabels con su día asignado, ahora bien, lo que necesito es cómo saber que día empieza x mes, para esto creé una subclase de GregorianCalendar, a la cual llamé ZCalendar, los métodos más importantes que me interesería saber si están bien hechos son getFirtsDayOfMonth() y getLastDayOfMonth(), lo que pasa es que a veces se me corre un día el calendario si pudieran decirme que estoy haciendo mal estaría bastante agradecido.

Código
package horario;
 
import java.util.HashMap;
import java.util.Calendar;
import java.util.GregorianCalendar;
/**
* Clase para obtener los datos necesarios para construir la interfaz grafica <code> Meses </code>
*
* @param año Los datos del objeto se crearan a pertir del año dado
* @param mes Los datos del objeto se crearan a pertir del mes dado
* @author Zero
*/

public class ZCalendar extends GregorianCalendar{
 
   Calendar g=GregorianCalendar.getInstance();
 
   int[] dias={g.MONDAY, g.TUESDAY, g.WEDNESDAY,g.THURSDAY,g.FRIDAY,g.SATURDAY,g.SUNDAY};
 
   /**
    * Arreglo utilizado para saber que día termina cada mes del año
    */

   int[] last={31, 28, 31,30,31,30,31,31,30,31,30,31};
 
   /**
    * Indica el año con que se construye este objeto
    */

   int y=0;
 
   /**
    * Usado para conocer que indice tendra cada mes del año en el arreglo <code>last[]</code>
    */

   HashMap<Integer, String> mez=null;
 
   /**
    * Indica el mes con que se construye este objeto
    */

   int m=0;
 
   /**
    * Indica el primer día del mes
    */

   int first=0;
 
   ZCalendar(int año, int mes){
 
       this.set(ZCalendar.YEAR, año);
       this.set(ZCalendar.MONTH, mes);
 
       m=mes;
 
       mez=new HashMap<Integer, String>();
 
       y=año;
 
       int w=0;
 
       mez.put(w, "Enero"); w++;
       mez.put(w, "Febrero"); w++;
       mez.put(w, "Marzo"); w++;
       mez.put(w, "Abril"); w++;
       mez.put(w, "Mayo"); w++;
       mez.put(w, "Junio"); w++;
       mez.put(w, "Julio"); w++;
       mez.put(w, "Agosto"); w++;
       mez.put(w, "Septiembre"); w++;
       mez.put(w, "Octubre"); w++;
       mez.put(w, "Noviembre"); w++;
       mez.put(w, "Diciembre"); w++;
 
 
 
 
   }
 
   /**
    * Devuelve la posicion del <code>ZLabel</code> desde donde empezarán los días del mes
    */

   int getFirstDayOfMonth(){
 
       int d=0;
 
       this.set(this.DAY_OF_MONTH, this.DAY_OF_MONTH - this.DAY_OF_MONTH);
 
       d=this.get(this.DAY_OF_WEEK);
 
       d++;
 
       first=d;
 
       return d;
 
   }
 
   /**
    * Devuelve la posicion del <code>ZLabel</code> en donde terminarán los días del mes
    */

int getLastDayOfTheMonth(){
 
   int x=0;
 
   if(m==1){
 
       return inFeb();
 
   }
 
   if(last[m]==30){
 
       return in30();
 
   }
 
   if(last[m]==31){
 
       return in31();
 
   }
 
   return x;
 
   }
 
private int in30(){
 
   switch(first){
 
       case 0:
       return 29;
       case 1:
       return 30;
       case 2:
       return 31;
       case 3:
       return 32;
       case 4:
       return 33;
       case 5:
       return 34;
       case 6:
       return 35;
       case 7:
       return 36;
 
   }
 
   return 10;
 
}
 
private int in31(){
 
   switch(first){
 
       case 0:
       return 30;
       case 1:
       return 31;
       case 2:
       return 32;
       case 3:
       return 33;
       case 4:
       return 34;
       case 5:
       return 35;
       case 6:
       return 36;
       case 7:
       return 37;
 
 
   }
 
   return 10;
 
}
 
private int inFeb(){
 
   if(isBis(y)){
 
       switch(first){
 
           case 0:
           return 28;
           case 1:
           return 29;
           case 2:
           return 30;
           case 3:
           return 31;
           case 4:
           return 32;
           case 5:
           return 33;
           case 6:
           return 34;
           case 7:
           return 35;
 
       }
 
   }else{
 
       switch(first){
 
           case 0:
           return 27;
           case 1:
           return 28;
           case 2:
           return 29;
           case 3:
           return 30;
           case 4:
           return 31;
           case 5:
           return 32;
           case 6:
           return 33;
           case 7:
           return 34;
 
 
       }
 
   }
 
   return 10;
 
}
 
/**
    * Devuelve <code>true</code> si <code>x</code> es multiplo de 4
*
* @param x Representa el año que se desea saber si es bisiesto
    */

boolean isBis(int x){
 
       if(x%4==0){
       return true;
       }else{
       return false;
       }
 
   }
 
/**
    * Devuelve el nombre del mes correspondiente
*
* @return m El nombre del mes con el que se construye este objeto
    */

String getMonthName(){
 
   return mez.get(this.m);
 
}
 
/**
    * Devuelve el año correspondiente
*
* @return m El año con el que se construye este objeto
    */

String getYearName(){
 
   return y+"";
 
}
 
}
 
 

Saludos


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Powered by SMF 1.1.16 | SMF © 2006-2008, Simple Machines