【发布时间】:2021-12-02 02:31:49
【问题描述】:
我有一个这样的 POST API:
@JsonDeserialize(using = MyCustomDeserializer.class)
@JsonSerialize(using = MyCustomSerializer.class)
@NotNull(message = "fromDate should not be blank!")
@FutureOrPresent(message = "fromDate must be of Future or Present")
private Instant fromDate;
我的实用程序包中有自定义序列化器和反序列化器:
public class MyCustomSerializer extends JsonSerializer<Instant> {
private DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd").withZone(ZoneOffset.UTC);
@Override
public void serialize(Instant value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException {
String str = fmt.format(value);
gen.writeString(str);
}
}
public class MyCustomDeserializer extends JsonDeserializer<Instant> {
private DateTimeFormatter fmt = DateTimeFormatter.ofPattern("yyyy-MM-dd").withZone(ZoneOffset.UTC);
@Override
public Instant deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException {
LocalDate date = LocalDate.parse(p.getText());
return Instant.from(fmt.parse(date.toString()));
}
}
我想在内部保存时间组件作为一天的开始。 API 应仅由date 接收和输出
我尝试将this 转换为Instant。有人可以帮助我如何做到这一点(在数据库中存储为 date+start_of_day)并以 yyyy-MM-dd 公开/使用?
【问题讨论】:
标签: java spring-boot datetime java-8 datetime-format