gpt4 book ai didi

java - @DateTimeFormat 转换时出现夏令时错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:29:30 26 4
gpt4 key购买 nike

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

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

@Column(nullable = false)
@NotNull
@DateTimeFormat(pattern = "dd/MM/yyyy")
private Date dataVisita;

我收到错误:

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)

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

有没有办法让我覆盖 @DateTimeFormat 注释或让格式化程序变得宽松?

最佳答案

试试这个:

@Column(nullable = false)

@NotNull

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

private Date dataVisita;

它似乎做你想做的事(调整 0:00 到 1:00),你需要实现一个 validator如下:

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);
}
}
}

关于java - @DateTimeFormat 转换时出现夏令时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46778306/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com