salve ragazzi mi serve una mano per perfezionare il codice..io vorrei inserire da tastiera i valori che mi servono..posto il codice
package Data;
/** @author user **/
public class DataModel {
private int iGiorno,
iMese,
iAnno;
public DataModel() {
iGiorno=1;
iMese=1;
iAnno=1900;
}
public DataModel(String date){
int Dati[]=ConvertStringToInt(date);
int gg,mm,aa;
gg=Dati[0];
mm=Dati[1];
aa=Dati[2];
if(ControlloData(gg,mm,aa)){
iGiorno=gg;
iMese=mm;
iAnno=aa;
}
else{
iGiorno=1;
iMese=1;
iAnno=1900;
}
}
public DataModel(int gg, int mm, int aa) {
if(ControlloData(gg,mm,aa)){
iGiorno=gg;
iMese=mm;
iAnno=aa;
}
else{
iGiorno=1;
iMese=1;
iAnno=1900;
}
}
public void setData(int Giorno,int Mese, int Anno) {
if(ControlloData(Giorno,Mese,Anno)){
iGiorno=Giorno;
iMese=Mese;
iAnno=Anno;
}
}
public void setData(String DataNuova) {
int Dati[]=ConvertStringToInt(DataNuova);
int gg,mm,aa;
gg=Dati[0];
mm=Dati[1];
aa=Dati[2];
if(ControlloData(gg,mm,aa)){
iGiorno=gg;
iMese=mm;
iAnno=aa;
}
}
public int getiGiorno() {
return iGiorno;
}
public int getiMese() {
return iMese;
}
public int getiAnno() {
return iAnno;
}
public static boolean ControlloData(int gg, int mm, int aa){
boolean control=true;
if (mm<13 && mm>0){
if (mm==4 || mm==6 || mm==9 || mm==11){
if (gg<31 || gg>0){
control=true;
}
}
else if(mm==2){
if((aa%4==0 && aa%100!=0) || (aa%400==0)){
if (gg<30 || gg>0){
control=true;
}
}
}
else{
if (gg<32 || gg>0){
control=true;
}
}
}
else{
control=false;
}
return control;
}
private int[] ConvertStringToInt(String DataNuova){
int Dati[]=new int[3];
int iFormDate=DataNuova.length();
if (iFormDate==10){
String [] sp = DataNuova.split("/");
Dati[0]=Integer.parseInt(sp[0]);
Dati[1]=Integer.parseInt(sp[1]);
Dati[2]=Integer.parseInt(sp[2]);
}
else if(iFormDate==8){
String [] sp = DataNuova.split("/");
Dati[0]=Integer.parseInt(sp[0]);
Dati[1]=Integer.parseInt(sp[1]);
Dati[2]=Integer.parseInt("19"+sp[2]);
}
return Dati;
}
// Calcola la dati in giorni a partire dalla data 00/00/0000
private int CalcDataGior(){
//calcolo quanti anni bisestili ci sono
int iNBis=0;
for (int i=0;i<this.iAnno;i+=1){
if((i%4==0 && i%100!=0) || (i%400==0)){
iNBis+=1;
}
}
//Lavoro sull'anno in corso
//Trovo il numero di giorni nell'ultimo anno
int iGiornUltAnn=0;
for (int i=1; i<this.iMese;i+=1){
if(i==2){
if((this.iAnno%4==0 && this.iAnno%100!=0) || (this.iAnno%400==0)){
iGiornUltAnn=iGiornUltAnn+29;
}
else{
iGiornUltAnn=iGiornUltAnn+28;
}
}
else if(i==4 || i==6 || i==9 || i==11){
iGiornUltAnn=iGiornUltAnn+30;
}
else{
iGiornUltAnn=iGiornUltAnn+31;
}
}
int DatInGiorn;
//calcolo giorni da data 00/00/0000
DatInGiorn=iGiornUltAnn+this.iGiorno+((this.iAnno-1)*365)+iNBis;
return DatInGiorn;
}
public int ContaGiorni(DataModel date){
//Calcolo la data in giorni dell due date
int DatGiorn1=this.CalcDataGior();
int DatGiorn2=date.CalcDataGior();
// calcolo la differenza tra le date in giorni
int iDifferenza;
iDifferenza=Math.abs((DatGiorn1-DatGiorn2));
return iDifferenza;
}
}
package Data;
/** @author user **/
public class DataControl {
/**
* @param args
*/
public static void main(String[] args) {
DataModel data1=new DataModel(),
data2=new DataModel(1,1,1992),
data3=new DataModel("01/01/1993");
int diff1=data1.ContaGiorni(data2);
int diff2=data2.ContaGiorni(data3);
System.out.println("Differenza prima data: "+diff1+" giorni");
System.out.println("Differenza seconda data: "+diff2+" giorni");
}
}

Rispondi quotando
