我们有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
。有没有办法使用注释或过滤器?
我建议将call_time
存储在两列中,UTC和用户本地时区。
通过这样做,它将消除两端(服务器和客户端)的复杂性和混乱
检查以下链接,它可能会对您有所帮助:将浏览器时区传递给后端springboot应用程序,以生成根据浏览器时区的日期的报告。根据后者,您可以使用TimeZone
作为控制器的输入。您可以这样做:
@RestController
public class TestController {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm");
@GetMapping(value = "/test")
public String generate(TimeZone timezone) throws IOException {
return LocalDateTime.now().atZone(timezone.toZoneId()).format(formatter);
}
}
或者,您可以从HttpServletRequest
获取时区。
JSON Serialize最适合这种按用户或用户角色进行的自定义数据转换。我创建了转换器类,并由@JsonSerialize(converter = LocalDateTimeToStringConverter.class)
和@JsonDeserialize(converter = StringToLocalDatetimeConverter.class)
调用。
为供参考,我附上了下面的示例链接。
使用JSON-Serialize-Deserialize自定义转换