java严格验证日期是否正确的代码
package com.xxxx.util; /**
* 输入日期 并进行验证格式是否正确
*/
public class FDate { public static void main(String[] args) {
System.out.println(validate("2018-06-30t"));
} /**
* 检查是否是闰年
*
* @param year
* @return
*/
public static boolean run(int year) {
if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0) {// 是闰年
// System.out.print(year + "是闰年! ");
return true;
} else {
return false;
}
} public static boolean validate(String dateStr) {
String msg ="";
String[] data = new String[3];
boolean flag = true; // 若不符合规则将值改为false
String year = "[0-9]{4}";// 年
String month = "[0-9]||0[0-9]||1[12]";// 月
String day = "[0-9]||[0-2][0-9]||3[01]";// 天
int YEAR = 0;
String str = dateStr;// 输入的字符串
data = str.split("[-/.+]");
// 最基本的检查格式 begin
if (!data[0].matches(year)) {
msg = "年不对";
flag = false;
}
if (!data[1].matches(month)) {
msg = "月不对";
flag = false;
}
if (!data[2].matches(day)) {
msg = "日不对";
flag = false;
}
// end
YEAR = Integer.valueOf(data[0]);
boolean run = run(YEAR);// run 为true是闰年否则是 非闰年
if (run) {// 闰年
if (data[1].matches("0[2]||2")) {// 这里是闰年的2月
if (!data[2].matches("0[1-9]||[1-9]||1[0-9]||2[0-9]")) {
flag = false;
msg = "2月份的天数不对";
}
}
} else {// 非闰年
if (data[1].matches("0[2]||2")) {// 这里是平年的2月
if (!data[2].matches("0[1-9]||[1-9]||1[0-9]||2[0-8]")) {
flag = false;
msg = "2月份的天数不对";
}
}
} // 下面判断除了2月份的大小月天数
if (data[1].matches("0[13578]||[13578]||1[02]")) {// 这里是大月
if (!data[2].matches("0[1-9]||[1-9]||[12][0-9]||3[01]")) {
flag = false;
msg = data[2] + " 天数不对";
}
} else if (data[1].matches("0[469]||[469]||11")) {// 这里是小月
if (!data[2].matches("0[1-9]||[1-9]||[12][0-9]||30")) {
flag = false;
msg = data[2] + " 天数不对";
}
} if (flag) {
msg = "日期格式正确";
} return flag;
} }
java严格验证日期是否正确的代码的更多相关文章
- java mail实现Email的发送,完整代码
java mail实现Email的发送,完整代码 1.对应用程序配置邮件会话 首先, 导入jar <dependencies> <dependency> <groupId ...
- Java 8 时间日期库的20个使用示例
java 8是如何处理时间及日期的 有人问我学习一个新库的最佳途径是什么?我的回答是,就是在实际项目中那样去使用它.在一个真实的项目中会有各种各样的需求,这会促使开发人员去探索和研究这个新库.简言之, ...
- 填坑:Java 中的日期转换
我们之前讨论过时间,在Java 中有一些方法会出现横线?比如Date 过期方法. 参考文章:知识点:java一些方法会有横线?以Date 过期方法为例 Java中的日期和时间处理方法 Date类(官方 ...
- Java 后台验证的工具类
Java 后台验证的工具类 public class ValidationUtil { //手机号 public static String mobile = "^( ...
- Java实现MD5加密及解密的代码实例分享
链接:http://www.jb51.net/article/86027.htm Java实现MD5加密及解密的代码实例分享 作者:厦门大学陈黎栋 字体:[增加 减小] 类型:转载 时间:2016-0 ...
- 使用oVal进行Java Bean 验证的注意事项
如果需要不同条件验证不同的属性的时候,需要使用profiles属性,每个校验注解符中都有.注意:oVal默认是启用所有的profiles,所以在对单独一个profile进行启用的时候,需要先disab ...
- Java 8 时间日期库的20个使用演示样例
除了lambda表达式,stream以及几个小的改进之外,Java 8还引入了一套全新的时间日期API,在本篇教程中我们将通过几个简单的任务演示样例来学习怎样使用Java 8的这套API.Java对日 ...
- Java中的日期操作 分类: B1_JAVA 2015-02-16 17:55 6014人阅读 评论(0) 收藏
在日志中常用的记录当前时间及程序运行时长的方法: public void inject(Path urlDir) throws Exception { SimpleDateFormat sdf = n ...
- Java Hour 50 日期类型
Plan List: 1 Java 中的日期类型 2 mysql 相关 3 java code style 鉴于本问题太过普通,所以参考文章满大街都是,因此本文内容基本为转载和验证. java.sql ...
随机推荐
- CSS变量使用解析
很早直接就了解到CSS变量相关的内容,奈何之前使用价值不高(很多主流浏览器不兼容) 最近发现主流浏览器都已经支持了这一变化 这一重要的变化,可能会让你发现,原生CSS从此变的异常强大~,下面看一下如何 ...
- Python的并发并行[1] -> 线程[3] -> 多线程的同步控制
多线程的控制方式 目录 唤醒单个线程等待 唤醒多个线程等待 条件函数等待 事件触发标志 函数延迟启动 设置线程障碍 1 唤醒单个线程等待 Condition类相当于一把高级的锁,可以进行一些复杂的线程 ...
- HashSet底层存储元素的源码分析
此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持.它不保证 set 的迭代顺序:特别是它不保证该顺序恒久不变.此类允许使用 null 元素. HashSet<Strin ...
- 洛谷—— P1869 愚蠢的组合数
https://www.luogu.org/problemnew/show/1869 题目描述 最近老师教了狗狗怎么算组合数,狗狗又想到了一个问题... 狗狗定义C(N,K)表示从N个元素中不重复地选 ...
- 洛谷——P1100 高低位交换
P1100 高低位交换 题目描述 给出一个小于2^32的正整数.这个数可以用一个32位的二进制数表示(不足32位用0补足).我们称这个二进制数的前16位为“高位”,后16位为“低位”.将它的高低位交换 ...
- 洛谷 P3636 曲面
题目背景 xht喜欢研究数学函数,他特别喜欢反比例函数. 题目描述 我们知道,反比例函数xy=a的图象是双曲线. xht于是想:把它推广到三维是什么样的呢? 定义曲面C(k)为方程xyz=k所确定的曲 ...
- Spring Boot中使用Feign调用时Hystrix提示异常:"could not be queued for execution and no fallback available."以及"Rejected command because thread-pool queueSize is at rejection threshold"
说明: 1.我还没有真正理解Spring Cloud的精髓,现只停留在使用阶段,可能存在分析不到位的问题. 1.这个是由于线程池的最大数量导致的,官方说随着线程池的数量越大,资源开销也就越大,所以调整 ...
- JQuery插件开发格式
原地址 一.jQuery扩展 1.$.extend(object) 类似于.Net的扩展方法,用于扩展jQuery.然后就可以用$.的方式调用. $(function(){ $.extend({ fu ...
- JAVA常见算法题(十八)
package com.xiaowu.demo; /** * 两个乒乓球队进行比赛,各出三人.甲队为a,b,c三人,乙队为x,y,z三人,以抽签决定比赛名单. 有人向队员打听比赛的名单:a说他不和x比 ...
- win10 安装java
https://jingyan.baidu.com/article/fea4511a12b158f7bb9125b9.html 一 下载java SE 官网 二设置环境变量 JAVA_HOME PAT ...