[Java]Como saber el día de la semana

Iniciado por 0xFer, 1 Junio 2013, 23:48 PM

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

0xFer

Sencillo programa para saber el día de la semana de una fecha...
el único inconveniente es que hay que saber si el año es bisiesto


import java.util.Scanner;

public class Estudiando{
   
public static String Busca_Dia(int dia){
String El_Dia=null;
   
  switch(dia){
      case 0: El_Dia="Domingo"; break;
      case 1: El_Dia="Lunes"; break;
      case 2: El_Dia="Martes"; break;
      case 3: El_Dia="Miercoles"; break;
      case 4: El_Dia="Jueves"; break;
      case 5: El_Dia="Viernes"; break;
      case 6: El_Dia="Sabado"; break;   
  }

return El_Dia;
}

    public static void imprime(String palabra){
    System.out.println(palabra);
    }
       
public static void main(String[]args){
Scanner leer = new Scanner(System.in);

int año,dia,mes;
int comprobar_año;

imprime("Ingresa año");
año = leer.nextInt();

do{
imprime("ingresa mes: del 1 al 12");
mes = leer.nextInt();
}while(mes>12 || mes==0);

do{
imprime("ingresa dia");
dia = leer.nextInt();
}while(dia>31 || dia==0);

do{
imprime("El año es bisiesto? Si->1,  No->2");
comprobar_año = leer.nextInt();
}while(comprobar_año>2 || comprobar_año==0);

int Modulo_mes = modulo_mes(mes,comprobar_año);

//Formula para saber el dia
int A = (año-1) % 7;
int D = dia % 7;
int DM = (((año-1)/4) - (3*((año-1)/100+1)/4)) % 7;
int resultado = (A + D + Modulo_mes + DM) % 7;

    String busca_dia = Busca_Dia(resultado);
    System.out.println("El dia Es: " + busca_dia);
    imprime("Comunidad Underground Hispana El-Hacker.com");

}


public static int modulo_mes(int mes,int bisiesto){
int modulo=0;

switch(mes){
    case 1: modulo = 0; break;
    case 2: modulo = 3; break;
    case 3: if(bisiesto==1)
               modulo = 4;
            else
              modulo = 3; break;
    case 4: if(bisiesto==1)
               modulo = 0;
            else
              modulo = 6; break;
    case 5: if(bisiesto==1)
               modulo = 2;
            else
              modulo = 1; break;
    case 6: if(bisiesto==1)
               modulo = 5;
            else
              modulo = 4; break;
    case 7: if(bisiesto==1)
               modulo = 0;
            else
              modulo = 6; break;
    case 8: if(bisiesto==1)
               modulo = 3;
            else
              modulo = 2; break;
    case 9: if(bisiesto==1)
               modulo = 6;
            else
              modulo = 5; break;
    case 10: if(bisiesto==1)
               modulo = 0;
            else
              modulo = 1; break;
    case 11: if(bisiesto==1)
               modulo = 4;
            else
              modulo = 3; break;
    case 12: if(bisiesto==1)
               modulo = 6;
            else
              modulo = 5; break;       
}

return modulo;
}

}
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}

Chuidiang

Lo del año bisiesto es fácil, más que saber el día de la semana  ;D


  public static boolean isLeap(int year)
  {
     return ((year%4==0&&year%100!=0)||(year%400==0));
  }


extraíado de http://es.wikipedia.org/wiki/A%C3%B1o_bisiesto

De todas formas, la clase java Calendar tiene un método get(Calendar.DAY_OF_WEEK) que devuelve el día de la semana.

Se bueno.

maxim_o

Si, calendar tiene un metodo que te da el dia de la semana, pero  creo que es del dia actual.... Es decir del dia que tengas marcado en la fecha del ordenador, no de una fecha cualquiera.


Chuidiang

A Calendar puedes darle cualquier fecha

Calendar unaFecha = Caldendar.getInstance();
unaFecha.setTime(.....);


y te devolverá el día de la semana de esa fecha.

Se bueno.

0xFer

Cita de: Chuidiang en  8 Junio 2013, 05:54 AM

De todas formas, la clase java Calendar tiene un método get(Calendar.DAY_OF_WEEK) que devuelve el día de la semana.

Se bueno.

na el chiste era escribir el código, pero hay otra forma mejor de hacerlo sin tantos calculos
Código (java) [Seleccionar]
int getRandomNumber(){
    return 4; //chosen by fair dice roll
              //guaranteed to be random
}