Java判断字符串是否为日期格式
纯正则判断
/**
* 功能:判断字符串是否为日期格式
*
* @param strDate
* @return
*/
public static boolean isDate(String strDate) {
Pattern pattern = Pattern.compile("^((\\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]))))))(\\s((([0-1]?[0-9])|(2?[0-3]))\\:([0-5]?[0-9])((\\s)|(\\:([0-5]?[0-9])))))?$");
Matcher m = pattern.matcher(strDate);
if (m.matches()) {
return true;
} else {
return false;
}
}
System.out.println(isDate("2013-05-01")); //true
System.out.println(isDate("1900-05-01")); //true
System.out.println(isDate("20130501")); //true
System.out.println(isDate("2013/5/1")); //true
System.out.println(isDate("15/5/1")); //false
System.out.println(isDate("05/01")); //false
System.out.println(isDate("2013/6/31")); //false
正则与SimpleDateFormat结合
public static boolean isDate(String strDate) {
String regex = "[0-9]{4}-[0-9]{2}-[0-9]{2}";
Pattern pattern = Pattern.compile(regex);
Matcher m = pattern.matcher(strDate);
boolean dateFlag = m.matches();
if (!dateFlag) {
return false;
}
DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
//设置lenient为false,否则SimpleDateFormat会比较宽松地验证日期,比如2007/02/29会被接受,并转换成2007/03/01
formatter.setLenient(false); //默认值true,不严格解析日期,会自动计算
try {
Date date = formatter.parse(strDate);
log.info(date);
return true;
} catch (Exception e) {
log.error(e);
}
return false;
}
版权声明:
作者:Joe.Ye
链接:https://www.appblog.cn/index.php/2023/02/18/java-determine-string-is-date-format/
来源:APP全栈技术分享
文章版权归作者所有,未经允许请勿转载。
THE END
0
二维码
打赏
海报
Java判断字符串是否为日期格式
纯正则判断
/**
* 功能:判断字符串是否为日期格式
*
* @param strDate
* @return
*/
public static boolean isDate(String strDate) {
Pattern patt……
文章目录
关闭
共有 0 条评论