Leggere, conservare e confrontare delle date puo` portare via molto tempo e codice. Di solito si crea una classe Data con questa interfaccia: class Data { public Data(int giorno, int mese, int anno); public int getGiorno(); public int getMese(); public int getAnno(); public int compareTo(Data altraData); } Cosa facciano getGiorno(), getMese() e getAnno() e` banale. compareTo confronta due date e restituisce un numero minore, maggiore o uguale a zero, a seconda che la prima data sia minore, maggiore o uguale alla seconda. Per esempio: Data d1 = new Data(10, 2, 2002); // 10 febbraio 2002 Data d2 = new Data(15, 10, 2000); // 15 ottobre 2000 if (d1.compareTo(d2) > 0) { System.out.println("La prima e` piu` grande della seconda.) } else if (d1.compareTo(d2) < 0) { System.out.println("La prima e` piu` piccola della seconda.) } else { System.out.println("La prima e` uguale alla seconda.) } Scrivere la classe Data puo` essere abbastanza dispendioso in termini di tempo. D'altronde puo` sembrare l'unica via quando ci sono da fare confronti fra date. Infatti, il seguente (semplicistico) confronto tra date contenute in stringhe restituirebbe un risultato errato: String d1 = "10-02-2002"; String d2 = "15-10-2000"; if (d1.compareTo(d2) > 0) { System.out.println("La prima e` piu` grande della seconda.) } else if (d1.compareTo(d2) < 0) { System.out.println("La prima e` piu` piccola della seconda.) } else { System.out.println("La prima e` uguale alla seconda.) } Infatti stamperebbe: La prima e` piu` piccola della seconda. Nonostante la prima sia del 2002, essa comincia per 10 mentre la seconda comincia per 15, percio` la seconda risulta piu` grande. L'ordine di confronte cioe` e` quello alfabetico. Ora vi presento un trucco semplicissimo che potrete usare nei programmi che richiedono confronti fra date, quando non avete il tempo di creare una intera classe `Data'. Il trucco consiste nel riorganizzare il formato della data in modo che il confronto alfabetico lavori a nostro vantaggio. Normalmente scriviamo le date nel formato `gg-mm-aaaa', cioe` DUE caratteri per il giorno, seguiti da DUE per il mese, seguiti da quattro per l'anno, come nell'esempio di sopra. Ebbene, semplicemente scrivendo queste componenti in ordine inverso, ecco che l'ordinamente alfabetico corrisponde a quello del tempo: `aaaa-mm-gg'. Adattando l'esempio di prima, vediamo che ora restituisce il risultato corretto: String d1 = "2002-02-10"; String d2 = "2000-10-15"; if (d1.compareTo(d2) > 0) { System.out.println("La prima e` piu` grande della seconda.) } else if (d1.compareTo(d2) < 0) { System.out.println("La prima e` piu` piccola della seconda.) } else { System.out.println("La prima e` uguale alla seconda.) } Massimiliano