校验字符串是否是合法日期格式
public static boolean isLegalDate(int length, String sDate, String format) {
int legalLen = length;
if ((sDate == null) || (sDate.length() != legalLen)) {
return false;
}
DateFormat formatter = new SimpleDateFormat(format);
try {
Date date = formatter.parse(sDate);
return sDate.equals(formatter.format(date));
} catch (Exception e) {
return false;
}
}
@Test
public void testDateCheck() {
String stringDate = "2023-10-32"; // 非法日期
String format = "yyyy-MM-dd";
boolean isLegalDate = isLegalDate(10, stringDate, format);
System.out.println("日期" + stringDate + "是否是合法日期:" + isLegalDate);
stringDate = "2024-08-08";
isLegalDate = isLegalDate(10, stringDate, format);
System.out.println("日期" + stringDate + "是否是合法日期:" + isLegalDate);
}
运行结果如下:
日期2023-10-32是否是合法日期:false
日期2024-08-08是否是合法日期:true
校验字符串是否是合法数字
public static boolean isNumeric(String str) {
try {
new BigDecimal(str).toString();
} catch (Exception e) {
return false;
}
return true;
}
@Test
public void testIsNumeric() {
String stringLegalNumeric = "20240808";
boolean isLegalNumeric = isNumeric(stringLegalNumeric);
System.out.println("字符串" + stringLegalNumeric + "是否是合法数字:" + isLegalNumeric);
stringLegalNumeric = "20240808DATE";
isLegalNumeric = isNumeric(stringLegalNumeric);
System.out.println("字符串" + stringLegalNumeric + "是否是合法数字:" + isLegalNumeric);
}
运行结果如下
字符串20240808是否是合法数字:true
字符串20240808DATE是否是合法数字:false
校验数字精度是否符合要求
public static boolean checkPositivePrecision(BigDecimal num) {
if (num == null) {
return false;
}
if (Math.signum(num.doubleValue()) < 0) {
return false;
}
if (num.scale() > 4 || num.precision() > 16 || (num.precision() - num.scale() > 12)) {
return false;
}
return true;
}
@Test
public void testIsLegalNumeric() {
BigDecimal num = new BigDecimal("1234.1234");
boolean isNumeric = checkPositivePrecision(num);
System.out.println("数字" + num + "是否符合16位整数4位小数要求:" + isNumeric);
num = new BigDecimal("1234.12345");
isNumeric = checkPositivePrecision(num);
System.out.println("数字" + num + "是否符合16位整数4位小数要求:" + isNumeric);
}
运行结果如下
数字1234.1234是否符合16位整数4位小数要求:true
数字1234.12345是否符合16位整数4位小数要求:false