最近做个一单机版项目,其中有两个下拉框,要求里面输入时间,格式必需是yyyy-mm-dd的。并且前面的时间不大于后面的时间。
网上的做法检查时间的正确性多数都是用正则表达式来做的。也一些其他的工具类来检查,个人觉得都太麻烦了。后来发现了个土方法,代码如下。
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date begin = null;
Date end = null;
if(baseInfoPage.getBeginDate().equals("")){
MessageDialog.openWarning(null, "提示信息", "请选择保险起期");
return;
}
if(baseInfoPage.getEndDate().equals("")){
MessageDialog.openWarning(null, "提示信息", "请选择保险止期");
return;
}
try {
begin = sdf.parse(baseInfoPage.getBeginDate());
end = sdf.parse(baseInfoPage.getEndDate());
String compare1 = sdf.format(begin);
String compare2 = sdf.format(end);
//时间逻辑错误就返回
if(!baseInfoPage.getBeginDate().equals(compare1)){
MessageDialog.openWarning(null, "提示信息", "保险起期时间不正确");
return;
}
if(!baseInfoPage.getEndDate().equals(compare2)){
MessageDialog.openWarning(null, "提示信息", "保险止期时间不正确");
return;
}
} catch (ParseException e) {
MessageDialog.openWarning(null, "提示信息", "日期格式不正确,正确的日期格式为:yyyy-MM-dd");
return;
}
Calendar beginDate = Calendar.getInstance();
beginDate.setTime(begin);
Calendar endDate = Calendar.getInstance();
endDate.setTime(end);
if(beginDate.after(endDate)){
MessageDialog.openWarning(null, "提示信息", "保险止期不能大于保险起期!");
return;
}
其中baseInfoPage.getBeginDate() 是我另一个类里的一个方法,也就是get combo里的text。我这里其实用到的是一个时间控件,开源的,DatePickerCombo 。大家不防到网上搜下看看,蛮好用的,可是没有swt 3.3里面内置的DateTime时间控件那么好看。可是也还不错了。不过具体的这个时间怎么获得都不重要,重要的只是这样一个想法。
当把字符串格式化成时间后,在把时间格式化成字符串的时候,如果时间逻辑不正确的话,肯定是不一样的。因为如果我时间格式成字符串的时候假如是2月31日,它会变成3月2日之类的,有兴趣深入的朋友可以试一下其他的情况。应该蛮有意思的。呵呵。时间:2007-02-28 = 字符串:2006-03-02 ???都可以试了下,午休时间不多了,下午又要干活,不多写,睡觉~~ ZZzzz
posted on 2007-09-10 13:32
逝去的圣男 阅读(692)
评论(1) 编辑 收藏