java - 在 Spring 根据请求设置时区

标签 java spring date datetime

我在UTC时区的数据库中有数据,并且客户端上有一些特定于时区的逻辑。

决定从用户所在时区的服务器返回数据,因此有一个流程:

  1. 客户端通过 JavaScript 检测用户的时区
  2. 在自定义 header 中发送(即 "X-TIMEZONE")
  3. 服务器拦截请求(在过滤器中)并为其设置当前时区(每个请求)
  4. 服务器处理转换并将数据返回给所在时区的用户

所以问题是设置请求范围的时区,这可能吗?

我发现 Timezone.setDefault() 通常为应用程序设置时区。

谢谢。

最佳答案

希望我正确理解你的问题。几周前我遇到了类似的问题,这是我的解决方案。我的代码托管在时间为 UTC 的地方,因此如果您的代码未托管在那里,您可以执行以下操作 Calendar time = Calendar.getInstance(TimeZone.getTimeZone("UTC")); 来实现它世界标准时间。我传入的变量时区正是我想要的目标时区。这基本上会增加或减少毫秒,以根据您想要的时区将其转换为时间。时间的日历对象应该是您要查找的时间。

Calendar time = Calendar.getInstance();
time.setTime(date);
TimeZone localTimeZone = TimeZone.getTimeZone(timezone);
int offSet = localTimeZone.getOffset(date.getTime());
time.set(Calendar.MILLISECOND, time.get(Calendar.MILLISECOND) + offSet);

在此链接中,您可以找到有效时区选项的列表。 http://tutorials.jenkov.com/java-date-time/java-util-timezone.html

关于java - 在 Spring 根据请求设置时区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38203785/

相关文章:

java - 有没有办法在每次使用 Java Controller 方法时调用一个方法?

java - 与反馈异步运行高计算任务

java - 如何处理由 2 个日期变量设置的上限和下限内的日期范围

ios - NS谓词 : Compare Date without time (Objective C)

java - 将日志从 kafka 连接器推送到端口

java - XmlBeans - 针对类型而非元素的 XSD 验证

java - mvn 发布 :prepare in spring boot 时无法将文件提交到 github

java - 字符串异常如何处理

java - Spring MVC : wrong encoding of downloaded file

r - 计算R中间隔内的日期