document.write('
Data hosted with ♥ by Pastebin.com - Download Raw - See Original
  1. /* AUTOR: d3n3k4 (Dnk!)
  2.  * WEB: http://d3n3k4.blogspot.com/
  3.  * FECHA: 24/ENERO/2011
  4.  * DESCRIPCION:
  5.  *      - Clase para obtener el dia de la semana de una fecha dada.
  6.  *      - Ejemplo de uso en funcion "main".
  7.  * NOTA: Este codigo es libre y puede ser usado,modificado... siempre y cuando se
  8.  * mantenga los creditos y comentarios del autor.
  9.  */
  10. import java.util.Scanner;
  11. public class ClsGetDayWeek {
  12.  
  13.     public static void main(String[] args) {
  14.         Scanner entrada = new Scanner(System.in);
  15.         String arrayDia[] = {"Lunes","Martes","Miercoles","Jueves","Viernes",
  16.                 "Sabado","Domingo"};
  17.         System.out.println("Introduce la fecha, Formato: [dd/mm/aaaa]");
  18.         System.out.println("Nota: A partir del 01/01/1900 este incluido.");
  19.         System.out.print(">> ");
  20.         String inDate[] = entrada.nextLine().trim().split("/");
  21.         System.out.print("Fue/es/será: ");
  22.         System.out.println(arrayDia[getDayWeek(Integer.parseInt(inDate[0]),Integer.parseInt(inDate[1]),Integer.parseInt(inDate[2]))]);
  23.     }
  24.     /*
  25.      * Comprueba si el año pasado por parametro es bisiesto.
  26.      */
  27.     public static boolean esBis(int pAnio){
  28.         boolean bis = false;
  29.         if (pAnio % 4 == 0 && pAnio % 100 != 0 || pAnio % 400 == 0)
  30.             bis = true;
  31.         return bis;
  32.     }
  33.     /*
  34.      * Obtienes los dias totales de un mes y año pasados por parametro.
  35.      */
  36.     public static int getDaysMonth(int pMes,int pAnio) {
  37.         int nDays = 30;
  38.         if (pMes == 1 || pMes == 3 || pMes == 5 || pMes == 7 || pMes == 8 || pMes == 10 || pMes == 12) {
  39.             nDays = 31;
  40.         } else if ( pMes == 2 ) {
  41.             if (esBis(pAnio)){
  42.                 nDays = 29;
  43.             } else {
  44.                 nDays = 28;
  45.             }
  46.         }
  47.         return nDays;
  48.     }
  49.     /*
  50.      * Obtienes el dia de las semana del primer dia del año pasado por parametro.
  51.      * Se obtiene: 0-Lunes,1-Martes,...6-Domingo.
  52.      */
  53.     public static int getFirstDayYear(int pAnio) {
  54.         int diaAnio = 0;
  55.         int indiceAnio = pAnio - 1900;
  56.         for (int indice = 1; indice <= indiceAnio; indice++) {
  57.             diaAnio++;
  58.             if (diaAnio == 7) {
  59.                 diaAnio = 0;
  60.             }
  61.         }
  62.         if (indiceAnio < 13) {
  63.             int sumados = indiceAnio/5;
  64.             for (int i = 0; i < sumados; i++) {
  65.                 diaAnio++;
  66.                 if (diaAnio == 7) {
  67.                     diaAnio = 0;
  68.                 }
  69.             }
  70.         } else {
  71.             int sumados = indiceAnio/4;
  72.             for (int i = 0; i < sumados; i++) {
  73.                 diaAnio++;
  74.                 if (diaAnio == 7) {
  75.                     diaAnio = 0;
  76.                 }
  77.             }
  78.         }
  79.         return diaAnio;
  80.     }
  81.     /*
  82.      * Obtienes el dia de la semana de la fecha pasada por parametro(dia,mes,anio)
  83.      * Se obtiene: 0-Lunes,1-Martes,...6-Domingo.
  84.      */
  85.     public static int getDayWeek(int pDia,int pMes,int pAnio) {
  86.         int numDiasMes = 0,diaSemana = getFirstDayYear(pAnio);
  87.  
  88.         for (int i = 1; i < pMes;i++) {
  89.             numDiasMes += getDaysMonth(i,pAnio);
  90.         }
  91.        
  92.         numDiasMes += pDia;
  93.        
  94.         for (int i = 0; i < numDiasMes - 1; i++) {
  95.             diaSemana++;
  96.             if (diaSemana == 7) {
  97.                 diaSemana = 0;
  98.             }
  99.         }
  100.         return diaSemana;
  101.     }
  102. }
');