首页 新闻 搜索 专区 学院

如何设置系统时区作为 @JsonFormat timezone

0
悬赏园豆:100 [待解决问题]

各位大佬:

从数据库查到的时间使用jackson的@JsonFormat进行格式化:
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private Date beginTime;

由于GMT+8这种常量不利于国际化,所以我想使用系统时区作为timezone。

我的方法:
1 使用默认时区
@JsonFormat(shape = JsonFormat.Shape.STRING,pattern = "HH:mm",timezone = JsonFormat.DEFAULT_TIMEZONE)
private Date timeQuantumBegin;

2 配置objectMapper,设置系统时区
@Autowired
public void configureJackson(ObjectMapper objectMapper) {
objectMapper.setTimeZone(TimeZone.getDefault());
}

但是效果还是达不到,差了八个小时。请问是我哪里做的不对吗?

ImagineDranges的主页 ImagineDranges | 初学一级 | 园豆:104
提问于:2020-06-16 16:00

debug看下objectMapper的timezone是不是你预期设置的值。。

。淑女范erり 1个月前

@。淑女范erり:这个确认过了,没问题。在配置文件中设置:spring.jackson.time-zone=GMT+8 也不起作用。难受

ImagineDranges 1个月前
< >
分享
所有回答(2)
-1

统一用UTC0即可,返回标准的带时区偏移信息的时间。

blackheart | 园豆:3366 (老鸟四级) | 2020-06-16 17:02

推荐使用Java中新的时间API,OffsetDateTime。

支持(0) 反对(0) blackheart | 园豆:3366 (老鸟四级) | 2020-06-16 17:08
0

已经解决,参考:
https://cloud.tencent.com/developer/article/1572118

根本原因是引用的jar包中配置了一个objectMapper.
导致我的代码失效。

ImagineDranges | 园豆:104 (初学一级) | 2020-06-17 20:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册