java - 如何使用 JsonFormat 格式化日期
问题描述
我想使用@JsonFormat 格式化数据并排除纳秒。
[{ "createtime": "2021-02-08 16:44:41.336475", "orderdate": "2021-02-03 22:55:54.764" }, { "createtime": "2021-02-08 16:44:41.3365", "orderdate": "2021-02-03 22:55:54.4" }]
纳秒的位数不固定。下面是我写的代码
@JsonProperty("createtime")
@JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd HH:mm:ss.SSSSSS")
private LocalDateTime createTime;
@JsonProperty("orderdate")
@JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "yyyy-MM-dd HH:mm:ss.SSS")
private LocalDateTime orderDate;
当“createtime”:“2021-02-08 15:14:41.33675”时,我无法反序列化 java.time.LocalDateTime。请告诉我如何以 yyyy-MM-dd HH:mm:ss 格式格式化日期。提前致谢
解决方案
首先,正如我理解您关于从 json 到 java LocalDateTime 属性的反序列化的问题。对于这种情况,您可以使用以下内容:
private class Timed {
private DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSSSS");
@JsonIgnore
private LocalDateTime createTime = LocalDateTime.now();
public LocalDateTime getCreateTime() {
return createTime;
}
public void setCreateTime(LocalDateTime createTime) {
this.createTime = createTime;
}
@JsonProperty("createtime")
public String createTime() {
return formatter.format(createTime);
}
@JsonCreator
public void setCreateTime(@JsonProperty("createtime") String property) {
createTime = LocalDateTime.parse(json, formatter).truncatedTo(ChronoUnit.SECONDS);
}
@Override
public String toString() {
return "Timed{" +
"createTime=" + createTime +
'}';
}
}
更新:你可以完全摆脱纳秒:
private DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
@JsonCreator
public void setCreateTime(@JsonProperty("createtime") String property){
String withoutNanos = property.split("\\.")[0];
createTime = LocalDateTime.parse(withoutNanos, formatter);
}
推荐阅读
- bash - 使用 ImageMagick 在较大的图像中插入较小的图像
- java - Java 流
流仅显示 txt 文件的前 10 行 - javascript - 卸载外部 JS 文件的按钮
- python - Windows 任务计划程序未在 Python 脚本中复制文件
- symfony - hwi oauth bundle 和 Symfony 4.2:无法安装
- ios - 如何从 UItextfield 获取用户输入并将其添加到数组中?
- javascript - 为什么 array.forEach(() => { array.pop() }) 不会清空数组
- css - 如何使用 CSS 打破 URL 中的字符串
- c - 如果不满足条件,则停止 while 循环
- postgresql - Kubernetes 服务未按预期工作