Чтобы проверить формат YYYY-MM-DD
, вы можете просто использовать LocalDate.parse
введенный в java.time
так JDK 8.
Получает экземпляр LocalDate из текстовой строки, такие как 2007-12-03.
Строка должна представлять действительную дату и обрабатывается с использованием DateTimeFormatter.ISO_LOCAL_DATE.
A DateTimeParseException
будет выброшен, если дата недействительна.
Для других двух форматов, которые вы нам дали, исключение будет выбрано. Это логично, потому что они не настоящая дата, просто часть даты.
LocalDate также способ of(int year, int month, int dayOfMonth)
таким образом, если вы действительно хотите проверить просто год в каком-то случае, год с месяца в другом случае или полной даты, то вы могли бы сделать что-то вроде этого:
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;
}
Обратите внимание, что вы упоминалось несколько форматов но не обеспечивают их, поэтому я предположил, это были только 3.
http://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html – arodriguezdonaire
Что вы ожидаете в качестве даты «YYYY»? «ГГГГ-01-01»? Тот же вопрос для «ГГГГ-ММ». –
Никогда не было хорошей практики использовать класс «Календарь». 'DateFormat' всегда использовался. – Kayaman