文档章节

判断日期的合法性

不最醉不龟归
 不最醉不龟归
发布于 2017/10/18 17:01
字数 617
阅读 7
收藏 0
/** 
 * @author 苏宝伢 E-mail:by.su@qq.com 
 * @version 创建时间: 2017年10月18日
 */
public class IsDate {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println(isDate("2000.02.1"));//如果日期是以\线分隔,需以\\隔开

	}
	
	//优化后的
	public static String isDate(String date){
			String convertDate = date.replaceAll("\\p{P}", "-");//把日期中的分隔号替换为-
			String[] dataSubs = convertDate.split("-");    //以-号为标志,分隔年月日
			int year = Integer.valueOf(dataSubs[0]);
			int month = Integer.valueOf(dataSubs[1]);
			int day = Integer.valueOf(dataSubs[2]);
			///////////////////计算闰年的2月份/////////////////////////////////
			if(dataSubs[0].endsWith("00")){         //如果年份为100的整数
				if(year % 400 == 0){    //能被400整除,即闰年
					//月份
					if(month == 2){ //2月份有29号
						if(day>0 && day<30){
							return "日期合法!";
						}
					}
				}
			}else{
				if(year % 4 == 0){  //能被4整除,即闰年
					//月份
					if(month == 2){ //2月份有29号
						if(day>0 && day<30){
							return "日期合法!";
						}
					}
				}
			}
			/////////////////计算平年的各月份////////////////////////////////////
			if(month == 2){ //2月份无29号
				if(day>0 && day<29){
					return "日期合法!";
				}
			}else if(month ==4|| month ==6 || month ==9|| month ==11){          //4,6,9,11月份
				if(day>0 && day<31){
					return "日期合法!";
				}
			}else{                         //剩余的月份
				if(day>0 && day<32){
					return "日期合法!";
				}
			}
			return "日期不合法!";
		}

	
	
//优化前的
	
	public static String isDate_before(String date){
	//	String convertDate = date.replaceAll("-", "[\\.|\\\\]");//把日期中的分隔号替换为-
		String[] dataSubs = date.split("-");    //以-号为标志,分隔年月日
		int year = Integer.valueOf(dataSubs[0]);
		int month = Integer.valueOf(dataSubs[1]);
		int day = Integer.valueOf(dataSubs[2]);
		
		if(dataSubs[0].endsWith("00")){         //如果年份为100的整数
			if(year % 400 == 0){    //能被400整除,即闰年
				//月份
				if(month == 2){ //2月份有29号
					if(day>0 && day<30){
						return "日期合法!";
					}
				}
				else if(month ==4|| month ==6 || month ==9|| month ==11){          //4,6,9,11月份
					if(day>0 && day<31){
						return "日期合法!";
					}
				}else{                         //剩余的月份
					if(day>0 && day<32){
						return "日期合法!";
					}
				}
			}else{
				//月份
				if(month == 2){ //2月份有29号
					if(day>0 && day<28){
						return "日期合法!";
					}
				}
				else if(month ==4|| month ==6 || month ==9|| month ==11){          //4,6,9,11月份
					if(day>0 && day<31){
						return "日期合法!";
					}
				}else{                         //剩余的月份
					if(day>0 && day<32){
						return "日期合法!";
					}
				}
			}
		}else{                                  //年份不是100的整数
			if(year % 4 == 0){  //能被4整除,即闰年
				//月份
				if(month == 2){ //2月份有29号
					if(day>0 && day<30){
						return "日期合法!";
					}
				}
				else if(month ==4|| month ==6 || month ==9|| month ==11){          //4,6,9,11月份
					if(day>0 && day<31){
						return "日期合法!";
					}
				}else{                         //剩余的月份
					if(day>0 && day<32){
						return "日期合法!";
					}
				}
			}else{
				//月份
				if(month == 2){ //2月份有29号
					if(day>0 && day<28){
						return "日期合法!";
					}
				}
				else if(month ==4|| month ==6 || month ==9|| month ==11){          //4,6,9,11月份
					if(day>0 && day<31){
						return "日期合法!";
					}
				}else{                         //剩余的月份
					if(day>0 && day<32){
						return "日期合法!";
					}
				}
				
			}
		}
		return "日期不合法!";
	}
}

 

© 著作权归作者所有

不最醉不龟归
粉丝 25
博文 443
码字总数 465172
作品 0
深圳
程序员
私信 提问
字符串处理算法(七)身份证号码合法性判断(华为校园招聘题)

一、问题描述: 我国公民的身份证号码特点如下: 1、 长度为18位; 2、 第1~17位只能为数字; 3、 第18位可以是数字或者小写英文字母x。 4、 身份证号码的第7~14位表示持有人生日的年、月、...

u011729265
2013/10/28
0
0
计算机基础导论 学习总结 上

课程大纲:从构建一个简单的搜索引擎项目出发,介绍构建过程中需要用到的技术,大致分为三个部分: 爬取数据 建立索引 页面排序 第一单元 开始你的第一行代码 课程前三个单元的目标是创建一个...

Nautilus1
2017/11/28
0
0
学以致用——Java源码——增强的自定义日期类(包含nextDay方法)(Enhancing Class Date with nextDay method)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/hpdlzu80100/article/details/85469411 功能介绍: 1. 使用年、月、日构建日期 2. 对年、月、日进行了合法性检...

预见未来to50
2018/12/31
0
0
读书笔记第三集--转换输入日期的格式

对于用户输入日期的合法性检验,是个很重要的问题,这个例子是简单得取得用户输入的日期,并转换为相应的格式,但不完美,原因请看后文。 The Code #!/bin/sh normdate -- Normalizes month ...

技术小胖子
2017/11/08
0
0
结构化编程的三重境界:见山还是山:朴素又正确的逻辑

在上述的隔夜退房的逻辑代码中,我们用了五个嵌套,其中有五个计算,但实际上只有3种不同的计算,在这样的模式下,我们值得思考,是不是代码过于冗余了。 现在我们把隔夜代码改为如下 Code /...

彭博
2012/03/09
47
0

没有更多内容

加载失败,请刷新页面

加载更多

友元函数强制转换

友元函数强制转换 p522

天王盖地虎626
昨天
4
0
js中实现页面跳转(返回前一页、后一页)

本文转载于:专业的前端网站➸js中实现页面跳转(返回前一页、后一页) 一:JS 重载页面,本地刷新,返回上一页 复制代码代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a h...

前端老手
昨天
3
0
JAVA 利用时间戳来判断TOKEN是否过期

import java.time.Instant;import java.time.LocalDateTime;import java.time.ZoneId;import java.time.ZoneOffset;import java.time.format.DateTimeFormatter;/** * @descri......

huangkejie
昨天
3
0
分页查询

一、配置 /*** @author beth* @data 2019-10-14 20:01*/@Configurationpublic class MybatisPlusConfig { @Bean public PaginationInterceptor paginationInterceptor(){ ......

一个yuanbeth
昨天
6
0
在LINQPad中使用Ignite.NET

LINQPad是进行.NET开发的一款优秀工具,非常有利于Ignite.NET API的快速入门。 入门 下载LINQPad:linqpad.net/Download.aspx,注意要选择64位操作系统的AnyCPU版本; 安装Ignite.NET的NuGet...

李玉珏
昨天
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部