java 用于验证给定字符串中的日期格式的Java Annotation
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java 用于验证给定字符串中的日期格式的Java Annotation相关的知识,希望对你有一定的参考价值。
import com.google.common.base.Strings;
import javax.validation.ConstraintValidator;
import javax.validation.ConstraintValidatorContext;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
public class ValidDateValidator implements ConstraintValidator<ValidDate, String> {
private Boolean isOptional;
@Override
public void initialize(ValidDate validDate) {
this.isOptional = validDate.optional();
}
@Override
public boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {
boolean validDate = isValidFormat("yyyy/MM/dd", value);
return isOptional ? (validDate || (Strings.isNullOrEmpty(value))) : validDate;
}
private static boolean isValidFormat(String format, String value) {
Date date = null;
try {
SimpleDateFormat sdf = new SimpleDateFormat(format);
if (value != null){
date = sdf.parse(value);
if (!value.equals(sdf.format(date))) {
date = null;
}
}
} catch (ParseException ex) {
}
return date != null;
}
}
import javax.validation.Constraint;
import javax.validation.Payload;
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
/**
* Validate that the annotated string is in YYYY/MM/DD Date format
*/
@Target({FIELD, PARAMETER})
@Retention(RUNTIME)
@Constraint(validatedBy = ValidDateValidator.class)
public @interface ValidDate {
String message() default "invalid date";
Class<?>[] groups() default {};
Class<? extends Payload>[] payload() default {};
boolean optional() default false;
}
以上是关于java 用于验证给定字符串中的日期格式的Java Annotation的主要内容,如果未能解决你的问题,请参考以下文章
java中怎么验证日期格式,要各种日期格式都能验证,代码比较简单的。
如何在java中获取给定的日期字符串格式(模式)?
用于存储日期和时间的最合适的 SQL 和 Java 数据类型 [重复]
请教高手们java中的字符串/日期的验证问题
java导入excel时处理日期格式(已验证ok)
java - 如何从Java中存储日期的给定字符串字段中减去X天? [复制]