在这个示例中,使用 SimpleDateFormat 类来尝试解析给定的日期字符串。通过将格式设置为 yyyy-MM-dd 并将其设置为不宽容模式(即不允许无效日期,如2月30日等)。如果解析成功则表示日期是有效的,否则无效。
以下是用 Java 验证日期正确性的方法:
/**
* 验证输入的日期字符串是否符合 yyyy-MM-dd 格式
*/
public static boolean isValidDate(String dateStr) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
// 禁用宽松解析
sdf.setLenient(false);
try {
// 解析日期格式,不抛出异常,则符合预期格式
sdf.parse(dateStr);
return true;
} catch (ParseException e) {
// 抛出异常,则不是预期的日期格式
return false;
}
}测试代码:
package com.hxstrive.demo202408;
import java.text.ParseException;
import java.text.SimpleDateFormat;
/**
* 验证日期格式是否有效
* @author hxstrive.com
*/
public class Demo20240821134004 {
public static boolean isValidDate(String dateStr) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
sdf.setLenient(false);
try {
sdf.parse(dateStr);
return true;
} catch (ParseException e) {
return false;
}
}
public static void main(String[] args) {
String validDate = "2024-08-21";
String invalidDate = "2024-13-21";
System.out.println(validDate + " is valid? " + isValidDate(validDate));
System.out.println(invalidDate + " is valid? " + isValidDate(invalidDate));
}
}运行输出结果:
2024-08-21 is valid? true 2024-13-21 is valid? false