【发布时间】:2020-03-25 03:47:43
【问题描述】:
我正在尝试使用 ISO 模式 pattern="yyyy-MM-dd'T'HH:mm:ss.SSS'Z'") 验证 Java 中 Instant 字段的有效日期格式,我收到一条错误消息,指出 JSON parse error: Cannot deserialize value of type java.time.Instant from String \"2019-11-25T14:43:22.602Z\" 任何人都可以帮我验证 Instant 类型的日期使用注释的字段。
这是我在代码中给出的方式:
@JsonFormat(shape = JsonFormat.Shape.STRING ,pattern="yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
private Instant processingEndDate;
或
@JsonFormat(pattern="yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
private Instant processingEndDate;
我为这个 Instant 类型使用的值和格式,它没有被解析。
Sample value: 2019-11-25T14:43:22.602Z
Format I used:yyyy-MM-dd'T'HH:mm:ss.SSS'Z'
【问题讨论】:
-
@deHaar 当然它是可格式化的,无需转换为 LocalDateTime。 Instant.toString() 正是这样做的。而 Instant.parse() 则相反。 docs.oracle.com/javase/8/docs/api/java/time/…, docs.oracle.com/javase/8/docs/api/java/time/…
-
您不需要任何注释。这是 Spring Boot 使用的默认格式,除非您使用非常旧的版本,或者您明确删除了依赖项。
-
@JBNizet 你是对的,但限制是 UTC 日期时间,这里存在......谢谢。
-
@deHaar 不,仍然不正确:ideone.com/BbZYL1。
-
@JBNizet 嗯...但是为什么JavaDocs of
public static Instant parse(CharSequence text)状态 字符串必须代表 UTC 中的有效时刻,并且使用 DateTimeFormatter.ISO_INSTANT 进行解析。?
标签: java spring-boot java-time iso date