码迷,mamicode.com
首页 > 编程语言 > 详细

java实现判断时间是否为合法时间

时间:2020-07-16 21:12:51      阅读:100      评论:0      收藏:0      [点我收藏+]

标签:严格   固定   正则表达   str   正则表达式   大小   amp   simple   ++   

  最近遇到一个需求,输入字符串,判断为日期的话再进行后面的比较大小之类的操作,但是合法日期的格式也是比较多的,利用正则表达式又太长了。所以后面利用的方法就是,先把输入的字符串转成一种固定的时间格式,然后利用java转String为Date的方法,看程序是否抛出异常来判断日期是否合法,需要注意的是需要将验证设置为严格的,也就是lenient设置为false,默认为true,不然的会出现例如2019-03-1223为正确的日期类型,主要是直接把1223换算成年月日加上去了。

  下面代码实现:

 /**
     * @author Carol
     * @date 2020年7月14日18:11:16
     * 验证字符串是否为合法日期 支持2019-03-12 2019/03/12 2019.03.12   HH:mm:ss HH:mm常用格式
     * @param date
     * @return
     */
    public static boolean verifyDateLegal(String date) {
        if ((date.contains("-") && date.contains("/"))
                || (date.contains("-") && date.contains("."))
                || (date.contains("/") && date.contains("."))){
            return false;
        }
        date.trim();
        StringBuilder timeSb = new StringBuilder();
        date = date.replaceAll("[\\.]|[//]", "-");
        String[] time = date.split(" ");
        timeSb.append(time[0]);
        timeSb.append(" ");
        if (time.length > 1) {
            timeSb.append(time[1]);
        }
        int i = time.length > 1 ? time[1].length() : 0;
        for ( ; i < 8 ; i ++) {
            if (i == 2 || i == 5){
                timeSb.append(":");
            } else {
                timeSb.append("0");
            }
        }
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        try {
            sdf.setLenient(false);
            sdf.parse(timeSb.toString());
            return true;
        } catch (ParseException e) {
            return false;
        }
    }

 

java实现判断时间是否为合法时间

标签:严格   固定   正则表达   str   正则表达式   大小   amp   simple   ++   

原文地址:https://www.cnblogs.com/lin0/p/13323925.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!