per convalidare il formato di YYYY-MM-DD
, si può semplicemente utilizzare LocalDate.parse
introdotto nel java.time
dal JDK 8.
Ottiene un'istanza di LocalDate da una stringa di testo come 2007-12-03.
La stringa deve rappresentare una data valida ed è analizzata utilizzando DateTimeFormatter.ISO_LOCAL_DATE.
A DateTimeParseException
verrà generata se la data non è valida.
Per gli altri due formati che ci hai fornito, l'eccezione sarebbe stata generata. Questo è logico perché non sono date reali, semplicemente parte di una data.
LocalDate anche fornire un metodo of(int year, int month, int dayOfMonth)
quindi se si vuole veramente per convalidare semplicemente l'anno in alcuni casi, l'anno con il mese in altro caso o la data completa allora si potrebbe fare qualcosa di simile:
public static final boolean validateInputDate(final String isoDate)
{
String[] dateProperties = isoDate.split("-");
if(dateProperties != null)
{
int year = Integer.parseInt(dateProperties[0]);
// A valid month by default in the case it is not provided.
int month = dateProperties.length > 1 ? Integer.parseInt(dateProperties[1]) : 1;
// A valid day by default in the case it is not provided.
int day = dateProperties.length > 2 ? Integer.parseInt(dateProperties[2]) : 1;
try
{
LocalDate.of(year, month, day);
return true;
}
catch(DateTimeException e)
{
return false;
}
}
return false;
}
si noti che è menzionate diversi formati ma non ha fornito loro, così ho assunto queste erano le uniche 3.
fonte
2015-08-25 13:34:56
http://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html – arodriguezdonaire
Che cosa si aspetta come una data per "AAAA"? "YYYY-01-01"? Stessa domanda per "YYYY-MM". –
Non è mai stata una buona pratica usare la classe 'Calendar'. 'DateFormat' è sempre stato quello da usare. – Kayaman