Confronto delle stringhe di data in Java

Così sto usando dateString1.compareTo(dateString2) che fa un confronto lessicografico con le stringhe, basato sul valore Unicode di ogni carattere, e restituisce un int. Ecco un esempio di codice.

 String dateString1 = "05-12-2012"; String dateString2 = "05-13-2012"; if (dateString1.compareTo(dateString2) <=0){ System.out.println("dateString1 is an earlier date than dateString2"); } 

È un approccio sbagliato per confrontare le date in Java?

Nei miei test, non mi sono imbattuto in una situazione in cui ho ottenuto risultati imprevisti. Non voglio davvero creare un object Date fuori dalla stringa, se non è necessario, perché lo sto facendo all’interno di un lungo ciclo di esecuzione.

Ninja Edit Spigolando dalle risposte qui sotto non c’è niente di sbagliato nel confrontare le date come una stringa se è nel formato yyyyMMdd , ma se è in qualsiasi altro formato, ovviamente si tradurrà in errore.

In realtà ho la mia stringa di data come yyyyMMdd nel mio codice reale. (Ho digitato il formato sbagliato nell’esempio che ho dato sopra.) Quindi per ora, lascerò il codice così com’è e aggiungerò alcune righe di commenti per giustificare la mia decisione.

Ma ora vedo che confrontare stringhe come questa è molto limitante e mi imbatterò in bug se dba deciderà di cambiare il formato della data lungo la strada, cosa che non vedo succedere.