Non posso usare il tipo Date (è un esercizio per scuola per farci comprendere come vengono gestite le date) quindi divido una stringa in 3 integer (giorno, meso, anno). Poi devo trovare quanti giorni intercorrono tra 2 date.
Ecco il codice (getData1 e getData2 restituiscono la stringa presente in un JTextField) :
codice:
Integer vettMesi[] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
@SuppressWarnings("deprecation")
public void controlloDate() {
Integer data1[]={0,0,0};
Integer a1,a2;
Integer data2[]={0,0,0};
Integer diffDate;
String dataSplit[];
if ((Date.parse(CreateGui.getData1())!=0) && (Date.parse(CreateGui.getData2())!=0)) {
dataSplit = CreateGui.getData1().split("/");
if (dataSplit.length == 3) {
data1[0] = Integer.parseInt(dataSplit[0]);
data1[1] = Integer.parseInt(dataSplit[1]);
data1[2] = Integer.parseInt(dataSplit[2]);
a1=data1[2];
dataSplit = CreateGui.getData2().split("/");
if (dataSplit.length == 3) {
data2[0] = Integer.parseInt(dataSplit[0]);
data2[1] = Integer.parseInt(dataSplit[1]);
data2[2] = Integer.parseInt(dataSplit[2]);
a2=data2[2];
if (a1 > a2) {
//minore
diffDate = (-1) * (calcolaDifferenza(data2, data1));
}
else if (a1 == a2) {
if (data1[1] > data2[1]) {
//minore
diffDate = (-1) * (calcolaDifferenza(data2, data1));
}
else if (data1[1] == data2[1]) {
if (data1[0] > data2[0]) {
//minore
diffDate = (-1) * (data1[0] - data2[0]);
}
else if (data1[0] == data2[0]) {
//uguale
diffDate = 0;
}
else {
//maggiore
diffDate = data2[0] - data1[0];
}
}
else {
//maggiroe
diffDate = calcolaDifferenza(data1, data2);
}
}
else {
//maggiore
diffDate = calcolaDifferenza(data1, data2);
}
JOptionPane.showMessageDialog(null, "Differenza date: " + Integer.toString(diffDate));
}
else {
JOptionPane.showMessageDialog(null,"Separatore non valido");
}
}
else {
JOptionPane.showMessageDialog(null,"Separatore non valido");
}
}
else {
JOptionPane.showMessageDialog(null,"Date inserite non valide");
}
}
private Integer calcolaDifferenza(Integer dataInizio[], Integer dataFine[]) {
Integer diffDate = 0;
Integer a1,a2;
diffDate += vettMesi[dataInizio[1] - 1] - dataInizio[0] + dataFine[0];
dataInizio[1] += 1;
if (dataInizio[1] > 12) {
dataInizio[1] = 1;
dataInizio[2] += 1;
}
if (((dataInizio[2] % 4 == 0) && ((dataInizio[2] % 100 != 0) || ((dataInizio[2]) % 400 == 0)))) {
vettMesi[1] = 29;
}
a1=dataInizio[2];
a2=dataFine[2];
while (((dataInizio[1] != dataFine[1]) || ((a1-5) != (a2-5)))) {
diffDate += vettMesi[dataInizio[1] - 1];
dataInizio[1] += 1;
if (dataInizio[1] > 12) {
dataInizio[1] = 1;
dataInizio[2] += 1;
if (((dataInizio[2] % 4 == 0) && ((dataInizio[2] % 100 != 0) || (dataInizio[2] % 400 == 0)))) {
vettMesi[1] = 29;
}
else if (vettMesi[1] != 28) {
vettMesi[1] = 28;
}
a1=dataInizio[2];
a2=dataFine[2];
}
}
return diffDate;
}