fabrizio95 ha scritto:
Ho un problema , praticamente qualsiasi data inserisco il software mi riscrive la data, se ci sono errori non vengono rilevati, potete aiutarmi gentilmente.
Innanzitutto quei if final (gli ultimi due sono pure sbagliati, perché && ha priorità maggiore rispetto a || ) di per sé non servono.
Con i (Simple)DateFormat un conto è una data "ben formata" (secondo un certo pattern) e un altro conto è una data che "esiste".
Quando crei il SimpleDateFormat, per default è in modalità
lenient ("indulgente"). Rifiuta date malformate ma accetta date che non esistono. Se tu inserisci 31/06/2020 (che non "esiste") questa viene ACCETTATA ma la considera come "1 giorno dopo la fine di Giugno" e ti ritrovi nell'oggetto Date 01/07/2020.
Se non vuoi questa "indulgenza", basta fare prima del parse:
sdf.setLenient(false);
E quindi NON accetterà mai date come 29/02/2019 o 31/06/2020 ecc... lanciando un bel ParseException (che tu dovresti catturare e gestire).
Pertanto rivedi il codice alla luce di queste informazioni e riverifica i test che fai.