您的位置:首页 > 编程语言 > Java开发

判断日期合法性

2016-03-18 13:28 435 查看
这边写一个判断一个日期的合法性,比如是没有2008-02-31,aaaa-03-89等都不合法的,这个Datetil在java中可以解决这样的一个问题,如果还有缺陷请相告,感谢!

import java.util.*;
import java.util.regex.*;
import java.text.*;

/** 这个是按照楼主的描述使用通过判断字符验证时间合法性 */
public class DateUtils2 {

private static void test(String stringdate){
System.out.println("输入[" + stringdate + "]是否合法:" + validate(stringdate));
}

/** 判断主方法 */
public static boolean validate(String dateString){
//使用正则表达式 测试 字符 符合 dddd-dd-dd 的格式(d表示数字)
Pattern p = Pattern.compile("\\d{4}+[-]\\d{1,2}+[-]\\d{1,2}+");
Matcher m = p.matcher(dateString);
if(!m.matches()){ return false;}

//得到年月日
String[] array = dateString.split("-");
int year = Integer.valueOf(array[0]);
int month = Integer.valueOf(array[1]);
int day = Integer.valueOf(array[2]);

if(month<1 || month>12){ return false;}
int[] monthLengths = new int[]{0, 31, -1, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
if(isLeapYear(year)){
monthLengths[2] = 29;
}else{
monthLengths[2] = 28;
}
int monthLength = monthLengths[month];
if(day<1 || day>monthLength){
return false;
}
return true;
}

/** 是否是闰年 */
private static boolean isLeapYear(int year){
return ((year % 4 == 0 && year % 100 != 0) || year % 400 == 0) ;
}
}

主函数这边直接这样调用就可以测试日期的合法性:
//测试代码 begin
public static void main(String[] s){
//以下是测试代码
DateUtils2.test("20099-1-1");
DateUtils2.test("20099-100-1");
DateUtils2.test("20099-1-100");
DateUtils2.test("2009-1-1");
DateUtils2.test("2009-1-31");
DateUtils2.test("2009-2-28");
DateUtils2.test("2009-2-29");
DateUtils2.test("2008-2-29");
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息