在这个示例中,使用 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