V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
neptuno
V2EX  ›  问与答

求助,关于 Java 时区的问题

  •  
  •   neptuno · 2022-06-02 16:10:03 +08:00 · 1527 次点击
    这是一个创建于 930 天前的主题,其中的信息可能已经有所发展或是发生改变。
    框架是 Spingboot ,json 是 fastjson ,部分缓存用的是 gson 。数据库+服务器时区都是北京时间,怎么设置才能使接口返回的是泰国时间?
    第 1 条附言  ·  2022-06-06 14:21:56 +08:00
    最后采取了 @JSONField(name="receive_time",serializeUsing = DateSerializer.class)的方式,DateSerializer 中判断 LocaleContextHolder.getLocale()来区分不同的语言。如果用户选择了泰语,则使用泰国时区。否则返回中国时间。
    10 条回复    2022-06-06 14:29:35 +08:00
    DreamStar
        1
    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
        2
    neptuno  
    OP
       2022-06-02 17:47:03 +08:00
    @DreamStar 这种方式是不是只能每个字段单独处理,我现在很多接口都返回了 date ,有方式可以批量设置吗
    lower
        3
    lower  
       2022-06-02 17:54:52 +08:00
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss" , timezone = "GMT+7") 直接字段上加注解???
    IsNotGood
        4
    IsNotGood  
       2022-06-02 20:25:03 +08:00 via iPhone
    在 yml 里面配置 date-format-pattern ?没遇到这种混合的情况
    dcsuibian
        5
    dcsuibian  
       2022-06-02 20:33:56 +08:00 via Android
    我都是传个时间戳让前端自己调
    neptuno
        6
    neptuno  
    OP
       2022-06-02 21:53:22 +08:00
    @lower 有很多接口都有 date 类型返回,不知道有没有办法,全局设置 fastjson 的 timezone ,网上查到的都是 jackson 的配置。我看 fastjson 默认是使用 Timezone.getdefault(),但没找到手动设置的地方
    night98
        7
    night98  
       2022-06-03 00:18:02 +08:00
    偷懒的话写个 date 类型的自定义序列化器注入进去,里面直接设置为泰国时区格式化
    neptuno
        8
    neptuno  
    OP
       2022-06-03 00:24:22 +08:00 via iPhone
    @night98 #7 谢谢回复,我下周试一下
    neptuno
        9
    neptuno  
    OP
       2022-06-06 14:27:04 +08:00
    @lower 这个我试了一下,是 jackson 的注解,我现在项目里用的是 fastjson ,会忽略这个注解
    neptuno
        10
    neptuno  
    OP
       2022-06-06 14:29:35 +08:00
    @DreamStar
    @IsNotGood
    @dcsuibian
    @night98 最后解决方案出来了哈,各位有需要的可以看一下
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1876 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:18 · PVG 00:18 · LAX 08:18 · JFK 11:18
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.