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 ...
 
随机推荐
- asp.net 网站模板怎么用,就是16aspx上面下下来的模板,里面有个sln文件,其他全是文件夹的东西
			
.net写的程序模板一般都被写死了.那样只有通过程序改了.
 - Ubunntu kylin下安装VmWare Tools(简洁方法)
			
1.在VM菜单栏单击虚拟机,选择安装Vmware tools(或者是重装Vmware Tools) 2.会弹出一个界面,就是光盘加载的那个界面,里面有个.******.gz文件 3.复制到桌面(你喜欢 ...
 - python 将windows字体中的汉字生成图片的方法
			
#encoding: utf-8import osimport pygame chinese_dir = '黑体常规'if not os.path.exists(chinese_dir): os.mk ...
 - (1)请求web
			
用来测试api的例子 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> ...
 - HDU 1171 Big Event in HDU【01背包/求两堆数分别求和以后的差最小】
			
Big Event in HDU Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) T ...
 - 集合框架(04)HashMap扩展知识
			
Map扩展知识 map集合被使用是具备映射关系 “bigclass”: “001”, ”zhangsan” “002”, ”lisi” “smallclass” : ”001”, “wangwu” : ...
 - 【微信】2.微信小程序开发--官方开发工具使用说明
			
承接第一篇 =============================================== 关于微信小程序开发使用IDE,曾经自己动摇过. 到底是采用 微信官方小程序开发工具 WebS ...
 - 【myEcplise2015】导入喜欢的主题
			
1.在官网下载epf样式文件 http://www.eclipsecolorthemes.org/ 2.选择一个喜欢的点击进入,点击下载 3.File -->Import--->Gener ...
 - 路由器漏洞复现分析第三弹:DVRF INTRO题目分析
			
这个项目的目的是来帮助人们学习X86_64之外其他架构环境,同时还帮助人们探索路由器固件里面的奥秘. 本文通过练习DVRF 中INTRO 部分的题目来学习下MIPS 结构下的各种内存攻击. DVRF: ...
 - oc的插件
			
umbra https://umbra3d.com/ 很不错