SimpleDateFormat验证时间格式是否正确

刚到公司实习的时候,公司让在已有查询条件的基础上添加开始时间和结束时间的查询条件。其中第一步要做的就是验证时间格式是否正确及开始时间是否先于结束时间。所以这里把写的验证时间的代码粘贴出来,方便自己以后使用。

一.判断时间格式是否正确

实现功能:验证时间格式是否为yyyy-MM-dd HH:mm:ss格式,其中,如果输入的时间只有年月日,且为开始时间,则在开始时间后添加这天的开头即00:00:00;如果是结束时间,则添加这天的末尾时间即23:59:59.

java代码

 1 private static Logger logger = Logger.getLogger(TimeUtils.class);
 2 private static SimpleDateFormat format_ymd = new SimpleDateFormat("yyyy-MM-dd");// HH:mm:ss
 3 private static SimpleDateFormat format_ymdhms_nospace = new SimpleDateFormat("yyyy-MM-ddHH:mm:ss");// HH:mm:ss
 4 private static SimpleDateFormat format_ymdhms = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");// HH:mm:ss
 5 // 用于判断时间参数的正误
 6 public static String reDefineDate(String datestring, boolean isStart) {
 7     int strLen = datestring.length();
 8     Date date = null;
 9     try {
10         switch (strLen) {
11             case 10:
12             if (isStart) {
13                 date = format_ymdhms.parse(datestring + " 00:00:00");
14             } else {
15                 date = format_ymdhms.parse(datestring + " 23:59:59");
16         }break;
17             case 18:
18                 date = format_ymdhms_nospace.parse(datestring);
19                 break;
20            case 19:
21                 date = format_ymdhms.parse(datestring);
22                 break;
23            default:
24                 logger.info("未知时间转换长度");
25                 break;
26            }
27         } catch (Exception e) {
28     logger.error("时间转换出错 " + e.getMessage() + " \n" + datestring, e);
29         }
30     if (date != null) {
31          return format_ymdhms.format(date);
32     } else {
33          return StringUtils.EMPTY;
34     }
35     }                                                            

二.判断开始时间是否先于结束时间

在验证了时间格式正确后,如果开始时间和结束时间都存在,还要判断开始时间与结束时间的关系,只有开始时间先于结束时间,这俩个时间值才能被当做查询条件,否则,应返回开始时间晚于结束时间的消息,并设置查询失败,原因为参数错误。

java代码

 1 public static boolean isBefore(String time1, String time2) {
 2     try {
 3         Date date1 = format_ymdhms.parse(time1);
 4         Date date2 = format_ymdhms.parse(time2);
 5         return date1.before(date2);
 6         } catch (Exception e) {
 7                 e.printStackTrace();
 8     }
 9       return false;
10  }                

另外,如果只传入开始时间或者结束时间,就不必比较时间的前后关系(只有一个时间,不存在比较关系),且这个时间也会作为参数传给数据库进行查询。

结束语:

这个是刚进公司写的程序,代码不够“优美”,是带我的导师给我提出了很多意见,感谢他。同时也明白了自己编程的不足,希望能每天都进步,赶上他们。

posted @ 2017-08-03 10:07  鲸落scu  阅读(3670)  评论(0编辑  收藏  举报