elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  [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 3,711 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 am »

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
  1. package horario;
  2.  
  3. import java.util.HashMap;
  4. import java.util.Calendar;
  5. import java.util.GregorianCalendar;
  6. /**
  7.  * Clase para obtener los datos necesarios para construir la interfaz grafica <code> Meses </code>
  8.  *
  9.  * @param año Los datos del objeto se crearan a pertir del año dado
  10.  * @param mes Los datos del objeto se crearan a pertir del mes dado
  11.  * @author Zero
  12.  */
  13. public class ZCalendar extends GregorianCalendar{
  14.  
  15.    Calendar g=GregorianCalendar.getInstance();
  16.  
  17.    int[] dias={g.MONDAY, g.TUESDAY, g.WEDNESDAY,g.THURSDAY,g.FRIDAY,g.SATURDAY,g.SUNDAY};
  18.  
  19.    /**
  20.      * Arreglo utilizado para saber que día termina cada mes del año
  21.      */
  22.    int[] last={31, 28, 31,30,31,30,31,31,30,31,30,31};
  23.  
  24.    /**
  25.      * Indica el año con que se construye este objeto
  26.      */
  27.    int y=0;
  28.  
  29.    /**
  30.      * Usado para conocer que indice tendra cada mes del año en el arreglo <code>last[]</code>
  31.      */
  32.    HashMap<Integer, String> mez=null;
  33.  
  34.    /**
  35.      * Indica el mes con que se construye este objeto
  36.      */
  37.    int m=0;
  38.  
  39.    /**
  40.      * Indica el primer día del mes
  41.      */
  42.    int first=0;
  43.  
  44.    ZCalendar(int año, int mes){
  45.  
  46.        this.set(ZCalendar.YEAR, año);
  47.        this.set(ZCalendar.MONTH, mes);
  48.  
  49.        m=mes;
  50.  
  51.        mez=new HashMap<Integer, String>();
  52.  
  53.        y=año;
  54.  
  55.        int w=0;
  56.  
  57.        mez.put(w, "Enero"); w++;
  58.        mez.put(w, "Febrero"); w++;
  59.        mez.put(w, "Marzo"); w++;
  60.        mez.put(w, "Abril"); w++;
  61.        mez.put(w, "Mayo"); w++;
  62.        mez.put(w, "Junio"); w++;
  63.        mez.put(w, "Julio"); w++;
  64.        mez.put(w, "Agosto"); w++;
  65.        mez.put(w, "Septiembre"); w++;
  66.        mez.put(w, "Octubre"); w++;
  67.        mez.put(w, "Noviembre"); w++;
  68.        mez.put(w, "Diciembre"); w++;
  69.  
  70.  
  71.  
  72.  
  73.    }
  74.  
  75.    /**
  76.      * Devuelve la posicion del <code>ZLabel</code> desde donde empezarán los días del mes
  77.      */
  78.    int getFirstDayOfMonth(){
  79.  
  80.        int d=0;
  81.  
  82.        this.set(this.DAY_OF_MONTH, this.DAY_OF_MONTH - this.DAY_OF_MONTH);
  83.  
  84.        d=this.get(this.DAY_OF_WEEK);
  85.  
  86.        d++;
  87.  
  88.        first=d;
  89.  
  90.        return d;
  91.  
  92.    }
  93.  
  94.    /**
  95.      * Devuelve la posicion del <code>ZLabel</code> en donde terminarán los días del mes
  96.      */
  97. int getLastDayOfTheMonth(){
  98.  
  99.    int x=0;
  100.  
  101.    if(m==1){
  102.  
  103.        return inFeb();
  104.  
  105.    }
  106.  
  107.    if(last[m]==30){
  108.  
  109.        return in30();
  110.  
  111.    }
  112.  
  113.    if(last[m]==31){
  114.  
  115.        return in31();
  116.  
  117.    }
  118.  
  119.    return x;
  120.  
  121.    }
  122.  
  123. private int in30(){
  124.  
  125.    switch(first){
  126.  
  127.        case 0:
  128.        return 29;
  129.        case 1:
  130.        return 30;
  131.        case 2:
  132.        return 31;
  133.        case 3:
  134.        return 32;
  135.        case 4:
  136.        return 33;
  137.        case 5:
  138.        return 34;
  139.        case 6:
  140.        return 35;
  141.        case 7:
  142.        return 36;
  143.  
  144.    }
  145.  
  146.    return 10;
  147.  
  148. }
  149.  
  150. private int in31(){
  151.  
  152.    switch(first){
  153.  
  154.        case 0:
  155.        return 30;
  156.        case 1:
  157.        return 31;
  158.        case 2:
  159.        return 32;
  160.        case 3:
  161.        return 33;
  162.        case 4:
  163.        return 34;
  164.        case 5:
  165.        return 35;
  166.        case 6:
  167.        return 36;
  168.        case 7:
  169.        return 37;
  170.  
  171.  
  172.    }
  173.  
  174.    return 10;
  175.  
  176. }
  177.  
  178. private int inFeb(){
  179.  
  180.    if(isBis(y)){
  181.  
  182.        switch(first){
  183.  
  184.            case 0:
  185.            return 28;
  186.            case 1:
  187.            return 29;
  188.            case 2:
  189.            return 30;
  190.            case 3:
  191.            return 31;
  192.            case 4:
  193.            return 32;
  194.            case 5:
  195.            return 33;
  196.            case 6:
  197.            return 34;
  198.            case 7:
  199.            return 35;
  200.  
  201.        }
  202.  
  203.    }else{
  204.  
  205.        switch(first){
  206.  
  207.            case 0:
  208.            return 27;
  209.            case 1:
  210.            return 28;
  211.            case 2:
  212.            return 29;
  213.            case 3:
  214.            return 30;
  215.            case 4:
  216.            return 31;
  217.            case 5:
  218.            return 32;
  219.            case 6:
  220.            return 33;
  221.            case 7:
  222.            return 34;
  223.  
  224.  
  225.        }
  226.  
  227.    }
  228.  
  229.    return 10;
  230.  
  231. }
  232.  
  233. /**
  234.      * Devuelve <code>true</code> si <code>x</code> es multiplo de 4
  235.  *
  236.  * @param x Representa el año que se desea saber si es bisiesto
  237.      */
  238. boolean isBis(int x){
  239.  
  240.        if(x%4==0){
  241.        return true;
  242.        }else{
  243.        return false;
  244.        }
  245.  
  246.    }
  247.  
  248. /**
  249.      * Devuelve el nombre del mes correspondiente
  250.  *
  251.  * @return m El nombre del mes con el que se construye este objeto
  252.      */
  253. String getMonthName(){
  254.  
  255.    return mez.get(this.m);
  256.  
  257. }
  258.  
  259. /**
  260.      * Devuelve el año correspondiente
  261.  *
  262.  * @return m El año con el que se construye este objeto
  263.      */
  264. String getYearName(){
  265.  
  266.    return y+"";
  267.  
  268. }
  269.  
  270. }
  271.  
  272.  

Saludos


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Como saber cual es la funcion llamadora con el SoftIce ???
Ingeniería Inversa
al3 3 2,587 Último mensaje 14 Abril 2005, 07:37 am
por UnpaCker!
Cual es el primer juego que conseguiste terminar? « 1 2 »
Juegos y Consolas
spj_family 19 6,147 Último mensaje 2 Septiembre 2007, 19:20 pm
por avaxia
SVCHOST.EXE, COMO SABER CUAL ES EL ARCHIVO VERDADERO DEL VIRUS EN EL DISCO DURO
Seguridad
JMM13 9 10,441 Último mensaje 10 Febrero 2011, 17:54 pm
por JMM13
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines