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
分享
二维码
打赏
海报
Java判断字符串是否为日期格式
纯正则判断 /** * 功能:判断字符串是否为日期格式 * * @param strDate * @return */ public static boolean isDate(String strDate) { Pattern patt……
<<上一篇
下一篇>>
文章目录
关闭
目 录