求助,关于 Java 时区的问题

2022-06-02 16:10:03 +08:00
 neptuno
框架是 Spingboot ,json 是 fastjson ,部分缓存用的是 gson 。数据库+服务器时区都是北京时间,怎么设置才能使接口返回的是泰国时间?
1312 次点击
所在节点    问与答
10 条回复
DreamStar
2022-06-02 17:33:52 +08:00
序列化方面不多赘述, jdk8 时间类库足以

```java
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
Instant now = Instant.now();
System.out.printf(
"中国: %s%n 泰国: %s",
formatter.format(now.atZone(ZoneId.of("Asia/Shanghai"))),
formatter.format(now.atZone(ZoneId.of("Asia/Bangkok")))
);
```
neptuno
2022-06-02 17:47:03 +08:00
@DreamStar 这种方式是不是只能每个字段单独处理,我现在很多接口都返回了 date ,有方式可以批量设置吗
lower
2022-06-02 17:54:52 +08:00
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+7") 直接字段上加注解???
IsNotGood
2022-06-02 20:25:03 +08:00
在 yml 里面配置 date-format-pattern ?没遇到这种混合的情况
dcsuibian
2022-06-02 20:33:56 +08:00
我都是传个时间戳让前端自己调
neptuno
2022-06-02 21:53:22 +08:00
@lower 有很多接口都有 date 类型返回,不知道有没有办法,全局设置 fastjson 的 timezone ,网上查到的都是 jackson 的配置。我看 fastjson 默认是使用 Timezone.getdefault(),但没找到手动设置的地方
night98
2022-06-03 00:18:02 +08:00
偷懒的话写个 date 类型的自定义序列化器注入进去,里面直接设置为泰国时区格式化
neptuno
2022-06-03 00:24:22 +08:00
@night98 #7 谢谢回复,我下周试一下
neptuno
2022-06-06 14:27:04 +08:00
@lower 这个我试了一下,是 jackson 的注解,我现在项目里用的是 fastjson ,会忽略这个注解
neptuno
2022-06-06 14:29:35 +08:00
@DreamStar
@IsNotGood
@dcsuibian
@night98 最后解决方案出来了哈,各位有需要的可以看一下

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/856975

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX