前言:
在实际项目开发中,跟时间参数打交道是必不可少的,为了保证程序的安全性、健壮性,一般都会对参数进行校验,其他类型的参数校验很好实现,那你知道时间参数的是怎么校验的吗?估计部分朋友在项目开发中,并没有对时间参数进行校验,本篇分享时间参数的场常见校验方法。
时间参数的校验方向?
格式是否正确,比如业务设计需要的是 yyyy-mm-dd 格式,而传参是 yyyy-mm-dd hh:mm:ss 格式等等。是否可以解析为正常时间,比如:2月30号这种时间。时间范围是否在业务要求之内,比如要求最大时间范围为一年。 校验方法
方法一:
使用 simpledateformat 校验,simpledateformat(jdk8 之前常用的方法)。
public class datevalidutil { public static void main(string[] args) { system.out.println("结果1" + isvalid("2024-13-06 12:12", "yyyy-mm-dd")); system.out.println("结果2" + isvalid("2024-06-06 12:12:12", "yyyy-mm-dd hh:mm:ss")); system.out.println("结果3" + isvalid("2024-06-06 12:12", "yyyy-mm-dd")); } public static boolean isvalid(string datestr,string dateformat) { final dateformat sdf = new simpledateformat(dateformat); sdf.setlenient(false); try { date parse = sdf.parse(datestr); } catch (parseexception e) { return false; } return true; } }
测试结果:
结果1false
结果2true
结果3true
结果分析:
- 2024-13-06 12:12 中 13月是不存在的,因此校验出来是 false,没有问题。
- 2024-06-06 12:12:12 校验结果为 true 没有问题。
- 2024-06-06 12:12 校验结果也是 true,这个结果就有待商榷了,我们要的是 yyyy-mm-dd 格式的,而实际的时间是带了时、分的,其校验结果也是 true,如果要强校验格式这里就有点问题了。
方法二:
public class datevalidutil { public static void main(string[] args) { system.out.println("结果1"+isvaliddate("2024-06-06 12:12","yyyy-mm-dd")); system.out.println("结果2"+isvaliddate("2024-06-06 12:12:12","yyyy-mm-dd hh:mm:ss")); } public static boolean isvaliddate(string datestr, string pattern) { try { localdate parse = localdate.parse(datestr, datetimeformatter.ofpattern(pattern)); system.out.println("转换结果"+parse); } catch (exception e) { return false; } return true; } }
测试结果:
结果1false
结果2true
结果3false
结果分析:
- 2024-13-06 12:12 中 13月是不存在的,因此校验出来是 false,没有问题。
- 2024-06-06 12:12:12 校验结果为 true 没有问题。
- 2024-06-06 12:12 校验结果也是 false,没有问题,因为我们要的是 yyyy-mm-dd 格式的,而实际的时间是带了时、分的,其校验结果也是 false,没有问题。
总结:对比两种校验方法,很明显使用 localdate 来校验更为严谨,如果你已经使用了 jdk8 及以上的版本,建议使用 localdate 来对日期格式进行校验。
到此这篇关于java 中常校验时间格式的方法的文章就介绍到这了,更多相关java 校验时间格式内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!
发表评论