В моем проекте мне нужно проверить, соответствует ли строка даты правильному объекту Date.Я решил разрешить yyyy-MM-dd и форматы даты [(год, месяц, дата) и (год, месяц, дата, часы, минуты)].Как я могу проверить, если они действительны?Мой код возвращает ноль для "1980-01-01" и некоторые странные даты (например, 3837.05.01), которые дают строку, разделенную запятыми:
private Date parseDate(String date){
Date data = null;
// yyy-mm-dd
try {
DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
df.setLenient(false);
df.parse(date);
return data;
}
catch (Exception e) {
try{
int[] datArr = parseStringForDate(date);
int len = datArr.length;
// year, month, day
if(len == 3){
return new Date(datArr[0], datArr[1], datArr[2]);
}
// year, montd, day, hours, mins
else if(len ==5){
return new Date(datArr[0], datArr[1], datArr[2], datArr[3], datArr[4]);
}
// year, month, day, hours, mins, secs
else if(len == 6){
return new Date(datArr[0], datArr[1], datArr[2], datArr[3], datArr[4], datArr[5]);
}
else {
return data;
}
}
catch (Exception f){
return data;
}
}
}
private int[] parseStringForDate(String s){
String[] sArr = s.split(",");
int[] dateArr = new int[sArr.length];
for(int i=0; i< dateArr.length; i++){
dateArr[i] = Integer.parseInt(sArr[i]);
}
return dateArr;
}
Я помню, что мне пришлось вычесть 1900 из года, но я также вижу, что месяц отличается и т. д., и я хотел бы избежать проверки каждого элемента моего массива целых из строки даты.Можно ли автоматически анализировать их в объекте «Календарь» или «Дата»?