当前位置:首页 > Java

如何校验日期java

2026-03-26 10:08:40Java

校验日期的 Java 方法

使用 SimpleDateFormatsetLenient 方法

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateValidator {
    public static boolean isValidDate(String dateStr, String format) {
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        sdf.setLenient(false);
        try {
            Date date = sdf.parse(dateStr);
            return true;
        } catch (ParseException e) {
            return false;
        }
    }
}

调用示例:

如何校验日期java

boolean isValid = DateValidator.isValidDate("2023-02-30", "yyyy-MM-dd");
System.out.println(isValid); // 输出 false,因为 2 月没有 30 日

使用 Java 8 的 LocalDateDateTimeFormatter

import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
import java.time.format.DateTimeParseException;

public class DateValidator {
    public static boolean isValidDate(String dateStr, String format) {
        DateTimeFormatter formatter = DateTimeFormatter.ofPattern(format);
        try {
            LocalDate.parse(dateStr, formatter);
            return true;
        } catch (DateTimeParseException e) {
            return false;
        }
    }
}

调用示例:

如何校验日期java

boolean isValid = DateValidator.isValidDate("2023-02-30", "yyyy-MM-dd");
System.out.println(isValid); // 输出 false

使用 Apache Commons Validator

如果项目中已引入 Apache Commons Validator,可以使用 DateValidator 类:

import org.apache.commons.validator.routines.DateValidator;

public class DateValidationExample {
    public static boolean isValidDate(String dateStr, String format) {
        DateValidator validator = DateValidator.getInstance();
        return validator.isValid(dateStr, format);
    }
}

自定义校验逻辑

对于更复杂的校验需求,可以结合正则表达式和逻辑判断:

import java.util.regex.Pattern;

public class DateValidator {
    public static boolean isValidDate(String dateStr) {
        Pattern pattern = Pattern.compile("^\\d{4}-\\d{2}-\\d{2}$");
        if (!pattern.matcher(dateStr).matches()) {
            return false;
        }
        String[] parts = dateStr.split("-");
        int year = Integer.parseInt(parts[0]);
        int month = Integer.parseInt(parts[1]);
        int day = Integer.parseInt(parts[2]);

        if (month < 1 || month > 12) {
            return false;
        }
        if (day < 1 || day > 31) {
            return false;
        }
        if (month == 4 || month == 6 || month == 9 || month == 11) {
            return day <= 30;
        }
        if (month == 2) {
            if (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0)) {
                return day <= 29;
            } else {
                return day <= 28;
            }
        }
        return true;
    }
}

注意事项

  • 使用 SimpleDateFormat 时需注意线程安全问题,建议每次使用时创建新实例或使用 ThreadLocal
  • Java 8 的日期时间 API(如 LocalDate)是线程安全的,推荐在新项目中使用。
  • 自定义逻辑需考虑闰年、月份天数等边界情况。

标签: 日期java
分享给朋友:

相关文章

java如何安装

java如何安装

安装Java的步骤 下载Java开发工具包(JDK) 访问Oracle官方网站或OpenJDK项目页面下载适合操作系统的JDK版本。Oracle JDK适用于商业用途,OpenJDK是开源版本。选择…

java如何编译

java如何编译

编译Java程序的基本步骤 安装JDK(Java Development Kit)并配置环境变量。确保javac和java命令可在命令行中运行。JDK是编译和运行Java程序的必备工具。 创建Jav…

java如何生成随机数

java如何生成随机数

生成随机数的方法 在Java中生成随机数可以通过多种方式实现,以下是几种常见的方法: 使用Math.random()方法 Math.random()方法返回一个double类型的伪随机数,范围在[0…

java中如何获取当前时间

java中如何获取当前时间

获取当前时间的几种方法 使用 java.time 包(Java 8及以上推荐) import java.time.LocalDateTime; LocalDateTime currentTime =…

java如何调用另一个类的方法

java如何调用另一个类的方法

调用另一个类的方法 在Java中调用另一个类的方法,通常需要创建该类的对象或直接通过类名调用(静态方法)。以下是几种常见的方式: 通过对象实例调用实例方法 创建一个目标类的对象,通过对象调用其方法。…

如何用java编程

如何用java编程

Java编程基础指南 环境配置 安装Java开发工具包(JDK),推荐使用最新版本。配置环境变量,确保JAVA_HOME指向JDK安装路径,并将bin目录添加到系统PATH中。验证安装是否成功: j…