gpt4 book ai didi

java - jackson @JsonFormat 意外的时区输出

转载 作者:行者123 更新时间:2023-11-30 07:55:33 25 4
gpt4 key购买 nike

我有这个 POJO:

@JsonIgnoreProperties(ignoreUnknown = true)
public class Scheduling {

@JsonProperty("created_at")
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSSXXX", timezone = "UTC")
public Date creationDate;

}

使用 java 8 和 jackson 2.7.8,我通过以下方式对其进行序列化:

String s = new ObjectMapper().writeValueAsString(scheduling);
System.out.println(s);

我希望输出类似于 SimpleDateFormat 的官方文档:{"created_at":"2001-07-04T12:08:56.235-07:00"} 但我得到的是 Z 时区: {"created_at":"2017-03-31T15:42:44.923Z"}。我试过 X、XX 和 XXX,每个都显示 Z 时区。 yyyy-MM-dd'T'HH:mm:ss.SSSZ 但是会按预期显示 +0000 时区,不带冒号。我错过了一个选项吗?

最佳答案

阅读这部分文档需要敏锐的眼光:)。

简而言之,模式中的“Z”表示 RFC822 时区偏移量。它始终是“Sign TwoDigitHours Minutes”。但是,X(或多个 X)表示 ISO8601 标志符,它可以是任何众所周知的组合,包括小时、分钟和时区字母符号,包括“Z”(ulu)。实际上,如果提供 GMT+0 时间,它将倾向于将其序列化为“Z”而不是 +00:00。我不知道这可以更改。另外,请注意使用“Z”作为时区模式的格式化程序不会解析字母时区指示符。

更多信息:https://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html#rfc822timezone

但是,我不确定您是否应该被打扰。只要日期格式符合标准(在您的情况下为 ISO8601),任何理智的解析器都能够以任何语言提取它。

关于java - jackson @JsonFormat 意外的时区输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43145121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com