Foro de elhacker.net

Programación => Java => Mensaje iniciado por: 0xFer en 1 Junio 2013, 23:48 pm



Título: [Java]Como saber el día de la semana
Publicado por: 0xFer en 1 Junio 2013, 23:48 pm
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


Código:
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;
}

}


Título: Re: [Java]Como saber el día de la semana
Publicado por: Chuidiang en 8 Junio 2013, 05:54 am
Lo del año bisiesto es fácil, más que saber el día de la semana  ;D

Código:
  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.


Título: Re: [Java]Como saber el día de la semana
Publicado por: maxim_o en 8 Junio 2013, 10:37 am
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.



Título: Re: [Java]Como saber el día de la semana
Publicado por: Chuidiang en 8 Junio 2013, 12:27 pm
A Calendar puedes darle cualquier fecha

Código:
Calendar unaFecha = Caldendar.getInstance();
unaFecha.setTime(.....);

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

Se bueno.


Título: Re: [Java]Como saber el día de la semana
Publicado por: 0xFer en 12 Junio 2013, 00:17 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