我有一个要验证的日期列表,我有一个仅适用于单个日期的函数,但我现在想要一个日期列表。
规则:
1)当列表为空时,我返回true
2)当日期无效时,我切换到以下并将其从日期列表中删除
3)编辑当所有执行完成后,我返回真(如果至少有一个是有效的)或假(他们都没有通过测试)。
编辑:而不是拥有这个isDateValid(String date)
==>isDateValid(List<LString> date)
日期列表:
List<String> dateList= new ArrayList<>();
dateList.add("2016-10-02T04:00:00.000Z");
dateList.add("2017-02-15T14:32:32");
dateList.add("2017-01-23");
功能(只有一个日期):
public boolean isDateValid(String date ) {
List<SimpleDateFormat> knownPatterns = new ArrayList<>();
knownPatterns.add(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"));
knownPatterns.add(new SimpleDateFormat("yyyy-MM-dd"));
knownPatterns.add(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"));
knownPatterns.add(new SimpleDateFormat("MM/dd/yyyy"));
for (SimpleDateFormat pattern : knownPatterns) {
try {
Date timestamp = pattern.parse(date);
return true;
} catch (ParseException e) {
continue;
}
}
return false;
}
your isDateValid method can be modified as follow for list
public boolean isDateValid(List<String> list ) {
//return true if list is null or empty
if(list==null || list.isEmpty())
return true;
List<SimpleDateFormat> knownPatterns = new ArrayList<>();
knownPatterns.add(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss"));
knownPatterns.add(new SimpleDateFormat("yyyy-MM-dd"));
knownPatterns.add(new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"));
knownPatterns.add(new SimpleDateFormat("MM/dd/yyyy"));
//counter to keep counting valid dates
int validCount=0;
boolean flag=false;
Iterator<String> itr=list.iterator();
String date;
while(itr.hasNext()){
date=itr.next();
for (SimpleDateFormat pattern : knownPatterns) {
try {
pattern.parse(date);
validCount++;
flag=true;
break;
} catch (ParseException e) {
continue;
}
}
if(!flag)
itr.remove();
else
flag=true;
}
//if there were valid dates in list return true else return false
return validCount>0?true:false;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句