我在UTC
时区的数据库中有数据,并且客户端上有一些特定于时区的逻辑。
决定从用户所在时区的服务器返回数据,因此有一个流程:
- 客户端通过 JavaScript 检测用户的时区
- 在自定义 header 中发送(即
"X-TIMEZONE"
) - 服务器拦截请求(在
过滤器
中)并为其设置当前时区(每个请求) - 服务器处理转换并将数据返回给所在时区的用户
所以问题是设置请求范围的时区,这可能吗?
我发现 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/