java校验yyyy-MM-dd HH:mm:ss日期格式是否正确
打印校验日期格式返回结果

代码如下
import java.util.Calendar;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Test {
public static void main(String[] args) {
System.out.println(validateDateTimeWithLongFormat("2023-04-20 08:02:02"));
System.out.println(validateDateTimeWithLongFormat("2023-04-20"));
}
public static boolean validateDateTimeWithLongFormat(String timeStr) {
String format = "((19|20)[0-9]{2})-(0?[1-9]|1[012])-(0?[1-9]|[12][0-9]|3[01]) "
+ "([01]?[0-9]|2[0-3]):[0-5]?[0-9]:[0-5]?[0-9]";
Pattern pattern = Pattern.compile(format);
Matcher matcher = pattern.matcher(timeStr);
if (matcher.matches()) {
pattern = Pattern.compile("(\\d{4})-(\\d+)-(\\d+).*");
matcher = pattern.matcher(timeStr);
if (matcher.matches()) {
int y = Integer.valueOf(matcher.group(1));
int m = Integer.valueOf(matcher.group(2));
int d = Integer.valueOf(matcher.group(3));
if (d > 28) {
Calendar c = Calendar.getInstance();
c.set(y, m - 1, 1);
int lastDay = c.getActualMaximum(Calendar.DAY_OF_MONTH);
return (lastDay >= d);
}
}
return true;
}
return false;
}
}