package ejercicio80;
/**
*
* @author juan
*/
public class Fecha {
private int dia;
private int mes;
private int anyo;
/**
* Constructor por defecto genera fechas al 1 del 1 del 2013
*/
public Fecha() {
this.dia = 1;
this.mes = 1;
this.anyo = 2013;
}
/**
* Constructor al que les pasamos tres parámetros si la fecha
* es posible se le asigna en caso de fecha incorrecta inicializa
* el objeto al 1-1-2013
* @param dia representa el día de la fecha completa
* @param mes mes de la fecha
* @param anyo año de la fecha
*/
public Fecha(int dia, int mes, int anyo) {
if (comprobarFecha(dia, mes, anyo)) {
this.dia = dia;
this.mes = mes;
this.anyo = anyo;
} else {
this.dia = 1;
this.mes = 1;
this.anyo = 2013;
}
}
public int getAnyo() {
return anyo;
}
public void setAnyo(int anyo) {
if (comprobarFecha(dia, mes, anyo)) {
this.anyo = anyo;
}
}
public int getDia() {
return dia;
}
public void setDia(int dia) {
if (comprobarFecha(dia, mes, anyo)) {
this.dia = dia;
}
}
public int getMes() {
return mes;
}
/**
* si el mes es correcto (teniendo en cuenta ya el día y el año que tiene asignada
* la fecha) se cambiará el mes por el que pasamos como parámetro
* @param mes representa el NUEVO mes que queremos asignar a la fecha
*/
public void setMes(int mes) {
if (comprobarFecha(dia, mes, anyo)) {
this.mes = mes;
}
}
/**
* Método para comprobar si un año es bisiesto.
* @param num año que queremos comprobar si es bisiesto o no
* @return Devuelve true si el año es bisiesto y false en caso contrario
*/
private boolean esBisiesto(int num) {
return ((num % 4 == 0 && num % 100 != 0) || (num % 500 == 0));
}
private boolean comprobarFecha(int dia, int mes, int anho) {
boolean correcta = true;
switch (mes) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
if (dia > 31 || dia < 1) {
correcta = false;
}
break;
case 4:
case 6:
case 9:
case 11:
if (dia > 30 || dia < 1) {
correcta = false;
}
break;
case 2:
if (dia > 29 || !(dia > 0 && (dia < 29) || (dia == 29 && esBisiesto(anho)))) {
correcta = false;
}
break;
default:
correcta = false;
}
return correcta;
}
}
No hay comentarios:
Publicar un comentario