七年的爱
手中没有剑,我如何保护她;手中握着剑,我如何抱紧她!
posts - 7,comments - 3,trackbacks - 0
   最近做个一单机版项目,其中有两个下拉框,要求里面输入时间,格式必需是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 逝去的圣男 阅读(686) 评论(1)  编辑  收藏

FeedBack:
# re: java 中检查时间正确性
2008-12-30 13:10 | 北京时间
睡觉~~ ZZzzz  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航: