@DateTimeFormat转换时带有夏令时错误

Thi*_*sen 7 java spring date formatter

我在使用@DateTimeFormat注释转换实际不存在的日期时遇到问题.

例如,当我设置日期15/10/2017时,我的实体中的注释如下:

@Column(nullable = false)
@NotNull
@DateTimeFormat(pattern = "dd/MM/yyyy")
private Date dataVisita;
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Failed To Convert Property Value Of Type Java.Lang.String To Required Type Java.Util.Date For Property DataVisita; 
Nested Exception Is Org.Springframework.Core.Convert.ConversionFailedException: 
    Failed To Convert From Type Java.Lang.String To Type @Javax.Persistence.Column @Javax.Validation.Constraints.NotNull @Org.Springframework.Format.Annotation.DateTimeFormat Java.Util.Date For Value 15/10/2017; 
Nested Exception Is Java.Lang.IllegalArgumentException: 
    Cannot Parse "15/10/2017": Illegal Instant Due To Time Zone Offset Transition (America/Sao_Paulo)
Run Code Online (Sandbox Code Playgroud)

我明白错误告诉我日期15/10/2017 00:00:00实际上并不存在,但我想转换为15/10/2017 01:00:00,忽略这种方式问题并找到相应的日期.

有没有办法让我覆盖@DateTimeFormat注释或将格式化程序指向宽松的方法?

hd1*_*hd1 4

尝试这个:

@Column(可为空 = false)

@NotNull

@DateTimeFormat(模式 = "dd/MM/yyyy HH:mm:ss")

私人日期数据访问;

它似乎做了你想要的(调整 0:00 到 1:00),你需要实现一个验证器,如下所示:

public class PersonValidator implements Validator {

    /**
     * This Validator validates *just* Person instances
     */
    public boolean supports(Class clazz) {
        return Date.class.equals(clazz);
    }

    public void validate(Object obj, Errors e) {
        String dateString = (String) obj;
        DateTimeFormatter fmt = DateTimeFormat.forPattern("dd/MM/yyyy HH:mm:ss");
        DateTime ourDate = null;
        try {
            fmt.parseDateTime(dateString);
        } catch (IllegalArgumentException e) {
            // massage your hour here
        } finally {
            ourDate = fmt.parseDateTime(dateString);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)