我一直在从JSON输入中以“ yyyy-MM-dd'T'HH:mm:ss.SSSXXX”格式接收日期,而Spring自身将其转换为DTO。但是,当转换为OffsetDateTime
实例时,这将丢失所创建的OffsetDateTime实例中有关Offset的信息。例如,我们在邮递员调用API中传递了以下内容,这导致解析和对象被创建,但对象中未设置偏移量。
以下是"2019-03-21T06:43:56.235+11:00"
日期的示例,该日期在解析时会以OffsetDateTime实例产生日期,但没有+11:00
作为偏移量。当我使用DateTimeFormatter
直接解析此字符串时,便可以填充偏移量。
是使用DateTimeFormatter
的代码。
OffsetDateTime.parse(offSetDateTimeString, DateTimeFormatter.ofPattern(DATE_PATTERN))
DATE_PATTER = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX"
。
请指导。
谢谢。
更新
我的DO有以下对象:
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private int id;
private String name;
// THis won't work as it doesn't support timestamp.
// @Column(columnDefinition = "TIMESTAMP WITH TIME ZONE")
// private LocalDateTime localDateTime;
@Column(columnDefinition = "TIMESTAMP WITH TIME ZONE")
private ZonedDateTime zonedDateTime;
@Column(columnDefinition = "TIMESTAMP WITH TIME ZONE")
private OffsetDateTime offSetDateTime;
虽然DTO也具有与SAME数据类型相同的字段。
答案 0 :(得分:0)
好的,这是我为解决此问题所做的事情。
MapStruct
)中进行更改。我为OffsetDateTime映射器类定义了自定义字符串,并在uses
的{{1}}中指定了它们。 这解决了我与解析有关的问题,然后转到DB,我注意到了几件事。
这是到目前为止的更新。发布此内容以供他人参考。谢谢大家的指导。