【发布时间】:2010-10-24 20:21:13
【问题描述】:
在我的项目中,我需要检查日期字符串是否计算为正确的 Date 对象。我决定允许 yyyy-MM-dd 和日期格式 [(年、月、日)和(年、月、日、小时、分钟)]。我如何检查它们是否有效?我的代码为“1980-01-01”和一些奇怪的日期(如 3837.05.01)返回 null,它们给出了一个用逗号分隔的字符串:
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 块来实现您的逻辑;如果您为特殊情况保留例外,您可能会发现事情会变得更加清晰。
-
与您的问题更相关:yyy-mm-dd 格式是什么? “999-10-10”是指 1999 年 10 月 10 日吗?还是 999 年 10 月 10 日? 2099 年 10 月 10 日?
-
哎呀应该是 yyyy
标签: java validation date