java 正则表达式匹配时间字符串格式,返回时间戳

public static void main(String[] args)  {
String dt = "2021-08-09 8:03";//这里可以匹配多种格式见下面说明
String regExp = "^[1-9]\\d{3}(-(0?[1-9]|1[0-2])(-(0?[1-9]|[1-2][0-9]|3[0-1])(\\s(20|21|22|23|[0-1]?\\d)(:[0-5]?\\d(:[0-5]?\\d)?)?)?)?)?$";
long temp = 0;
if(dt.matches(regExp)){
    temp = temp(dt, check(dt,"-"));
}
System.out.println(temp);

}

private static String check(String dt,String flag) {
    StringBuffer sb = new StringBuffer("yyyy");
    int i = dt.indexOf(flag);
    if (i<0){
        return sb.toString();
    }else if(dt.length()<8){
        sb.append(flag).append("MM");
        return sb.toString();
    }else if(dt.length()<11){
        sb.append(flag).append("MM").append(flag).append("dd");
        return sb.toString();
    }else if(dt.indexOf(":")<0){
        sb.append(flag).append("MM").append(flag).append("dd").append(" ").append("HH");
        return sb.toString();
    }else if(dt.lastIndexOf(":")>14){
        sb.append(flag).append("MM").append(flag).append("dd").append(" ").append("HH").append(":mm").append(":ss");
        return sb.toString();
    }else {
        sb.append(flag).append("MM").append(flag).append("dd").append(" ").append("HH").append(":mm");
        return sb.toString();
    }
}
private static long temp(String dateTime,String template) {
    long time = (new SimpleDateFormat(template)).parse(dateTime, newParsePosition(0)).getTime() ;
    System.out.println(time);
    System.out.println(System.currentTimeMillis());
    return time;
}

说明:dt输入类型可以是匹配的格式

yyyy 格式:2021

yyyy-MM或yyyy-M格式:2021-08 或2021-8

yyyy-MM-dd或yyyy-M-d或yyyy-MM-d或yyyy-M-dd:2021-08-24 或 2021-8-24 或 2021-07-3等

yyyy-MM-dd HH或yyyy-M-d H或yyyy-MM-d H等格式:2021-08-09 08 或2021-08-9 8 等

yyyy-MM-dd HH:mm或yyyy-M-d H:m或yyyy-MM-d H:mm等:2021-08-09 17:08 或2021-08-9 8:2 

yyyy-MM-dd HH:mm:ss 等格式:2021-08-09 08:03:57 或 2021-8-09 8:28:9 等

还可以把flage="/"就可以匹配yyyy/MM/dd HH:mm:ss 等格式

你可能感兴趣的:(java)