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; } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了