p0ll0_ ha scritto:
Nella tabella c'è una colonna con segnata la scadenza del prodotto. Io prendo la scritta nella colonna a devo stabilire se il prodotto è scaduto, se così la scritta diventa rossa in grassetto
[...]
L'errore che mi viene dato è sempre lo stesso. O sia oggi che domani sono in grassetto o sia oggi che domani sono non in grassetto, ma sempre rosso... grazie mille !
Guarda, te lo dico sinceramente/onestamente: ti stai davvero complicando tantissimo la vita, facendo dei gironi di codice che neanche Dante ci arriverebbe ....
Innanzitutto, se non ci sono motivi davvero validi, sarebbe meglio abbandonare Date e i (Simple)DateFormat. Principalmente perché questi sono oggetti purtroppo "mutabili", quindi non thread-safe e non facilmente condivisibili (specialmente in ambito multi-threading ma questo è un altro discorso ..).
Sarebbe invece meglio usare le classi temporali e i formatter in java.time (Java 8+) che sono tutti
immutabili, quindi thread-safe e facilmente condivisibili/riusabili.
Si può mettere un campo static da qualche parte:
public static final DateTimeFormatter dateFmt = DateTimeFormatter.ofPattern("dd/MM/yyyy", Locale.ITALIAN);
E riusarlo tutte le volte che si vuole.
Poi per la scadenza:
String dataScadenzaStr = ....... // data scadenza del prodotto, es. "03/08/2021"
LocalDate dataScadenza = LocalDate.parse(dataScadenzaStr, dateFmt);
if (dataScadenza.compareTo(LocalDate.now()) < 0) { // si può anche usare isBefore()
// è scaduto !
}
Basta verificare che la data scadenza sia inferiore alla data "now", quella odierna. Se la data di scadenza è "oggi", generalmente si intende che è un prodotto ancora ok.
Ed è proprio tutto lì, 3 righe ...