zoukankan      html  css  js  c++  java
  • java实现判断时间是否为合法时间

      最近遇到一个需求,输入字符串,判断为日期的话再进行后面的比较大小之类的操作,但是合法日期的格式也是比较多的,利用正则表达式又太长了。所以后面利用的方法就是,先把输入的字符串转成一种固定的时间格式,然后利用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;
            }
        }
  • 相关阅读:
    前后端微服务联调
    Rancher搭建ES容器集群
    Rancher解决磁盘占满异常
    Rancher搭建Redis主从集群
    Rancher搭建NFS持久存储
    Linux普通用户管理
    Rancher部署mysql8
    Delegate背后的秘密
    Java——反射
    redis 操作命令
  • 原文地址:https://www.cnblogs.com/lin0/p/13323925.html
Copyright © 2011-2022 走看看