【发布时间】:2021-11-30 04:59:09
【问题描述】:
我们有 api: call_summary/
{
"id": 2,
"number: "xyz",
"call_time": "2021-10-11T03:50:23Z"
}
我们有多个用户使用不同的时区,如 ADT、EDT、IST 等。当用户访问此 API 时,call_time 应根据用户时区进行更改。我尝试使用@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "IST"),但这不允许我们动态更改call_time。
有没有办法使用注释或过滤器来做到这一点?
【问题讨论】:
-
没有自动方式。您需要一种机制来获取用户的时区(例如,使用某些 API),然后将日期时间转换为该时区。第二部分请查看How to convert date time from one time zone to another time zone。
-
我不知道最好的方法,但是,假设您有办法知道当前响应所需的 TZ,您需要注册一个自定义序列化程序(杰克逊的
ZonedDateTimeSerializer可能是复制或扩展的良好开端,另请参阅 Jackson 的模块)读取所需的 TZ 并使用适当的格式化程序。但是,我认为向用户自己的 TZ 显示日期是表示层的责任! 祝你好运! -
我建议将时间存储在 UTC 时区,让客户端更改为所需的时区。如果这不可能,您将不得不编写自定义序列化程序来更改请求中存在的时区
标签: java spring-boot timezone jersey rest