在我的项目中,我需要检查日期字符串是否计算为适当的Date对象。我决定允许yyyy-MM-dd和日期格式[(年,月,日)和(年,月,日,时,分)]。我如何检查它们是否有效?我的代码返回null“1980-01-01”和一些奇怪的日期(如3837.05.01)whon,给出了由逗号分隔的字符串:如何检查日期字符串的有效性?
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,但我也看到那个月不同等,我想避免检查从日期字符串我的整数数组的每个元素。是否可以在日历或日期对象中自动解析它们?
欢迎来到Stack Overflow!这不会直接解决你的问题,但你使用try-catch块来实现你的逻辑;你可能会发现,如果你保留例外条件,事情会变得更加清晰。 – Pops 2010-10-24 20:35:36
与您的问题更相关:什么是yyy-mm-dd格式? “999-10-10”是指1999年10月10日?或999年10月10日? 2099年10月10日? – Pops 2010-10-24 20:38:13
哎呦,应该是yyyy – dbnazz 2010-10-24 21:01:11