我有这个dto:
public class TransactionRequestDTO {
private ZonedDateTime authDate;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSZ")
@JsonProperty("authDate")
public void setAuthDate(String authDate) {
this.authDate = ZonedDateTime.parse(authDate);
}
}
我正在使用以下json进行rest api调用:
{
"instrumentDate": "2020-02-28T05:50:24.000+02:00"
}
但我收到的日期是 "2020-02-28T05:50:24.000+0200"
在 setAuthDate()
(不带“:”)。
因此,它给出了一个例外:
'java.time.format.DateTimeParseException' at ZonedDateTime.parse(authDate).
2条答案
按热度按时间6yoyoihd1#
字符串中表示的日期和时间
2020-02-28T05:50:24.000+02:00
属于ISO-8601
格式,因此您可以简单地使用offsetdatetime如果您仍然想格式化为zoneddatetime,只需使用具有正确模式的datetimeformatter
mwecs4sa2#
你的模式不正确。将其更改为以下模式之一:
或
演示:
输出:
另外,由于日期时间的时区偏移为
+02:00
小时,你应该考虑使用OffsetDateTime
而不是ZonedDateTime
. 有些数据库如postgresql不支持ZonedDateTime
,Instant
以及OffsetTime / TIME [ WITHOUT TIMEZONE ]
.