Bonsoir, je suis debutant et j'airamerais savoir si la class Date est bien faite ( peut etre rajouter des commentaires) et s'il faut rajouter encore des méthodes... Aidez moi please !!
public class Date{
private int numéroDeJour; // le 1/1/1900 est le jour n°1
public static boolean estBissextile(int année){
if((année%4==0 && !(année%100==0))|| année%400==0)
return true;
else return false;
}
public static int nombreDeJoursDuMois(int année, int mois){
if(mois==1 || mois==3 || mois==5 || mois==7 || mois==8 || mois==10 || mois==12)
return 31;
else if(mois==2){
if(estBissextile(année))
return 29;
else return 28;
}
else return 30;
}
public static boolean estValide(int jour, int mois, int année){
if(année<1900)
return false;
if(mois<1 || mois>12)
return false;
if(jour<1 || jour>nombreDeJoursDuMois(année,mois))
return false;
else return true;
}
public Date(int numéroDuJour){
this.numéroDeJour=numéroDuJour;
}
public Date(int jour, int mois, int année){
int nbrDeJours=0;
for(int i=1900;i<année;i++){
if(estBissextile(i))
nbrDeJours+=366;
else nbrDeJours+=365;
}
for(int y=1;y<mois;y++){
nbrDeJours+=nombreDeJoursDuMois(année,y);
}
nbrDeJours+=jour;
this.numéroDeJour=nbrDeJours;
}
public int getNuméroDeJour(){
return this.numéroDeJour;
}
public int getJour(){
int année,mois,numéroDeJour,joursRestant;
année=getAnnée();
mois=getMois();
Date jour = new Date(1,mois,année);
numéroDeJour=jour.getNuméroDeJour();
joursRestant=this.numéroDeJour-numéroDeJour;
return joursRestant+1;
}
public int getMois(){
int mois=1,joursDansMois,numéroDeJour=this.numéroDeJour,année;
int totalJoursAnnées=0,joursRestant=0;
année=getAnnée();
for(int i=1900;i<année;i++){
if(estBissextile(i))
totalJoursAnnées+=366;
else totalJoursAnnées+=365;
}
joursRestant=numéroDeJour-totalJoursAnnées;
joursDansMois=31;
while(joursRestant>joursDansMois){
joursRestant-=joursDansMois;
mois++;
joursDansMois=nombreDeJoursDuMois(année,mois);
}
return mois;
}
public int getAnnée(){
int numéroDeJour=this.numéroDeJour;
int cptAnnée=1900,cptJours,année=0;
if(estBissextile(cptAnnée))
cptJours=366;
else cptJours=365;
while(numéroDeJour>cptJours){
numéroDeJour-=cptJours;
cptAnnée++;
année++;
if(estBissextile(cptAnnée))
cptJours=366;
else cptJours=365;
}
return 1900+année;
}
public String toString(){
return getJour()+"/"+getMois()+"/"+getAnnée();
}
//compareTo renvoie un négatif si la date courante est antérieure à la date passée en paramètre,
// 0 si égale
// un positif si la date courante est postérieure à la date passée en paramètre
public int compareTo(Date autreDate){
if(this.numéroDeJour<autreDate.getNuméroDeJour())
return -1;
else if(this.numéroDeJour>autreDate.getNuméroDeJour())
return 1;
else
return 0;
}
public int nombreDeJoursEntre(Date autreDate){
return Math.abs(this.numéroDeJour-autreDate.getNuméroDeJour());
}
public Date leLendemain(){
Date date= new Date(getJour()+1,getMois(),getAnnée());
return date;
}
public Date datePlusNombreDeJours(int nombreDeJour){
Date date= new Date(getJour()+nombreDeJour,getMois(),getAnnée());
return date;
}
public int jourDeLaSemaine(){ // dimanche --> 0 ; lundi --> 1 ; ...
return this.numéroDeJour%7;
}
}