java-校验日期

    public static boolean isDateTime(String dateVal) {
        if (dateVal != null) {
            if (dateVal.length() != "yyyy-MM-dd HH:mm:ss".length()) {
                return false;
            }
        }
        Date exitDate = null;
        if(dateVal != null){
            try {
                DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                exitDate = df.parse(dateVal);
            } catch (ParseException e) {
                return false;
            }
        }
        
        String strDate = null;
        if(exitDate != null) {
            DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            strDate = df.format(exitDate);
        }
        return dateVal.equals(strDate);
    }
### 如何使用 Java 注解校验日期格式 在 Java 中,可以通过自定义注解的方式实现对日期格式的有效性校验。Hibernate Validator 提供了一个强大的框架支持这种需求。以下是具体的实现方法以及代码示例。 #### 自定义注解用于校验日期格式 为了校验日期是否符合指定的格式,可以创建一个自定义注解 `@ValidDate` 并将其绑定到 Hibernate Validator 的约束机制上。通过这种方式,可以在运行时自动验证字段值是否满足预期的日期格式[^1]。 ```java import javax.validation.Constraint; import javax.validation.Payload; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; @Target({ElementType.FIELD, ElementType.PARAMETER}) @Retention(RetentionPolicy.RUNTIME) @Constraint(validatedBy = DateValidator.class) public @interface ValidDate { String message() default "Invalid date format"; Class<?>[] groups() default {}; Class<? extends Payload>[] payload() default {}; } ``` #### 实现自定义校验器逻辑 接下来需要编写对应的校验器类 `DateValidator` 来完成具体的功能实现。该类实现了 `javax.validation.ConstraintValidator` 接口并重写了必要的方法以执行日期解析操作[^3]。 ```java import javax.validation.ConstraintValidator; import javax.validation.ConstraintValidatorContext; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class DateValidator implements ConstraintValidator<ValidDate, String> { private static final String DATE_FORMAT = "yyyy-MM-dd"; // 可根据业务调整此常量 @Override public boolean isValid(String value, ConstraintValidatorContext context) { if (value == null || value.isEmpty()) { return true; // 如果允许空值,则返回true;否则修改此处逻辑 } try { SimpleDateFormat sdf = new SimpleDateFormat(DATE_FORMAT); sdf.setLenient(false); // 设置严格模式 Date parsedDate = sdf.parse(value); // 尝试解析给定字符串为日期对象 return true; } catch (ParseException e) { return false; // 解析失败表示不符合设定格式 } } } ``` #### 应用场景实例化 最后,在实体模型或者控制器层中应用上述自定义注解即可达到目的。下面展示了一种典型的应用方式: ```java import org.hibernate.validator.constraints.Length; public class UserRegistrationRequest { @Length(min=5, max=20, message="Username must be between 5 and 20 characters long.") private String username; @ValidDate(message="Please provide a valid birthdate in yyyy-MM-dd format") private String birthdate; // Getters & Setters omitted for brevity... public String getUsername() {return username;} public void setUsername(String username) {this.username=username;} public String getBirthdate() {return birthdate;} public void setBirthdate(String birthdate) {this.birthdate=birthdate;} } ``` 当提交表单数据至服务器端时,如果用户填写的内容违反了这些规则(比如出生日期未按照标准格式),那么系统会抛出异常提示错误消息[^2]^。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值