das YYYY-MM-DD
Format Zur Validierung Sie einfach LocalDate.parse
in java.time
seit JDK 8 eingeführt können
Ermitteln eine Instanz von LOCALDATE aus einer Textzeichenfolge wie 2007-12-03.
Die Zeichenfolge muss ein gültiges Datum darstellen und wird unter Verwendung von DateTimeFormatter.ISO_LOCAL_DATE analysiert.
A DateTimeParseException
wird ausgelöst, wenn das Datum ungültig ist.
Für die anderen zwei Formate, die Sie uns gaben, würde die Ausnahme geworfen werden. Das ist logisch, denn sie sind kein echtes Datum, sondern nur ein Teil eines Datums.
LOCALDATE auch ein Verfahren of(int year, int month, int dayOfMonth)
also, wenn Sie wirklich nur das Jahr, in einigen Fällen überprüfen möchten, das Jahr mit dem Monat, in anderen Fällen oder das vollständige Datum dann könnte man so etwas tun:
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;
}
Beachten Sie, dass Sie erwähnt mehrere Formate sie aber nicht liefern, so nahm ich das waren die einzige 3.
http://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html – arodriguezdonaire
Was möchten Sie als Datum für „YYYY“ erwarten? "JJJJ-01-01"? Gleiche Frage für "YYYY-MM". –
Es war nie eine gute Übung, die 'Kalender' Klasse zu verwenden. 'DateFormat' war immer das zu verwendende. – Kayaman