java 日期校验_yyyy-MM-dd格式的Java日期校验代码

该博客介绍了一个使用正则表达式和Java代码来校验`yyyy-MM-dd`格式日期的方法,确保包括闰年的2月29日在内的2万天内所有日期的有效性。
摘要由CSDN通过智能技术生成

用正则表达式匹配,从1970-01-01开始往后2万天逐一测试日期有效性,包括闰年2月29日,都可以校验通过。

import java.text.DateFormat;

import java.text.SimpleDateFormat;

import java.util.Calendar;

import java.util.Date;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

public class TempTest {

public static void main(String[] args) throws Exception {

Date date = new Date(0);

DateFormat df = new SimpleDateFormat("yyyy-MM-dd");

Calendar cale = Calendar.getInstance();

cale.setTime(date);

for (int i = 0; i < 20000; i++) {

if (!isValidDate(df.format(date))) {

System.out.println("校验失败:" + df.format(date));

}

cale.add(Calendar.DAY_OF_YEAR, 1);

}

System.out.println(df.format(cale.getTime()) + " End.");

}

/**

* 判断日期格式:yyyy-mm-dd

*

* @param sDate

* @return

*/

public static boolean isValidDate(String sDate) {

String datePattern1 = "\\d{4}-\\d{2}-\\d{2}";

String datePattern2 = "^((\\d{2}(([02468][048])|([13579][26]))"

+ "[\\-\\/\\s]?((((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|"

+ "(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?"

+ "((0?[1-9])|([1-2][0-9])))))|(\\d{2}(([02468][1235679])|([13579][01345789]))[\\-\\/\\s]?("

+ "(((0?[13578])|(1[02]))[\\-\\/\\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\\-\\/\\s]?"

+ "((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\\-\\/\\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))";

if ((sDate != null)) {

Pattern pattern = Pattern.compile(datePattern1);

Matcher match = pattern.matcher(sDate);

if (match.matches()) {

pattern = Pattern.compile(datePattern2);

match = pattern.matcher(sDate);

return match.matches();

} else {

return false;

}

}

return false;

}

}

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2012-03-01 09:49

浏览 10960

评论

1 楼

Ma__sm

2012-06-01

966903dea4bcb507358d5dcce8b912e5.gif 感谢

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值