如何在java rest api响应中动态更改时区?



我们有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自定义转换

相关内容

  • 没有找到相关文章

最新更新