java - 有没有办法将所有日期序列化和反序列化为 UTC 毫秒?
问题描述
我正在尝试在我们的应用程序中标准化日期,以在请求和响应中发送 UTC 毫秒。
该应用程序使用 Spring Boot 作为 REST 后端。我已经添加BasicStringTypeAdapters
了 for java.util.Date
、java.time.LocalDateTime
和java.time.Instant
,如下所示,但没有一个被应用。
如果我为 添加一个虚拟的java.lang.String
,它可以工作,所以我知道这些是在适当的地方注册的。
但是,我相信这里的代码是无条件地覆盖这些适配器。具体registerJsonTypeAdapters(Java8TypeAdapters.adapters());
覆盖java.time.LocalDateTime
和java.time.Instant
(我相信)gsonBuilder.serializeNulls().setDateFormat(ISO_DATE_TIME_FORMAT);
覆盖java.util.Date
。
如果我不正确,有人可以指出我如何将所有日期序列化为 UTC 毫秒的正确方向吗?
如果我是正确的,我还能得到一些关于如何进行的建议吗?
return TransactionalJaversBuilder
.javers()
.withTxManager(transactionManager)
.withObjectAccessHook(new HibernateUnproxyObjectAccessHook())
.registerJaversRepository(sqlRepository)
.registerValueTypeAdapter(
new BasicStringTypeAdapter<Date>() {
@Override
public Class getValueType() {
return Date.class;
}
@Override
public String serialize(Date value) {
return String.valueOf(value.getTime());
}
@Override
public Date deserialize(String in) {
return new Date(Long.valueOf(in));
}
}
)
.registerValueTypeAdapter(
new BasicStringTypeAdapter<LocalDateTime>() {
@Override
public Class getValueType() {
return LocalDateTime.class;
}
@Override
public String serialize(LocalDateTime value) {
return String.valueOf(value.toInstant(ZoneOffset.UTC).toEpochMilli());
}
@Override
public LocalDateTime deserialize(String in) {
return Instant.ofEpochMilli(Long.valueOf(in)).atZone(ZoneOffset.UTC).toLocalDateTime();
}
}
)
.registerValueTypeAdapter(
new BasicStringTypeAdapter<Instant>() {
@Override
public Class getValueType() {
return Instant.class;
}
@Override
public String serialize(Instant value) {
return String.valueOf(value.toEpochMilli());
}
@Override
public Instant deserialize(String in) {
return Instant.ofEpochMilli(Long.valueOf(in));
}
}
)
.build();
解决方案
推荐阅读
- android - 如何为如图所示的对话框创建布局,该对话框必须对所有屏幕尺寸都做出响应?
- angular - 如何在 Angular 7 中为模式对话框创建路由?
- c - 简单的命令行解释器
- react-native - 如何使用 React Navigation 将“操作按钮”添加到 BottomTabNavigator
- java - 按钮打开错误的菜单
- reactjs - 如何将 babel + terser 工作流程转换为 webpack?
- r - 将向量元素分配给矩阵
- node.js - 异步函数内部什么也没有发生(使用easysoap发送请求)
- json - 如何以角度 5+ 显示嵌套 JSON ...?
- kerberos - 通过 SASL 的 Kerberos:我需要买票吗?