GsonBuilder setDateFormat for “2011-10-26T20:29:59-07:00”

2022-08-31 17:28:47

我在 json 中得到了一个日期/时间,如 .这次使用的正确方法是什么来正确格式化?2011-10-26T20:29:59-07:00gsonBuilder.setDateFormat


答案 1

是 ISO 8601 时区表示法。直到Java 7才支持这一点。因此,如果您可以升级到 Java 7,则可以使用 来表示该时区表示法:-07:00SimpleDateFormatX

Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ssX").create();

Java 6 上,您需要先对 JSON 字符串进行一些模式匹配和替换,以用 RFC 822 表示法替换该部分,以便您可以使用:-07:00-0700Z

Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").create();

或通过一般时区表示法,以便您可以使用:GMT-07:00z

Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd'T'HH:mm:ssz").create();

答案 2

对于 Java 8(尚未针对 Java 7 进行验证),只需使用该模式

yyyy-MM-dd'T'HH:mm:ssXXX

要准确获取 的格式,2011-10-26T20:29:59-07:00

时区模式来自 Java 日期时间 - 自定义日期格式模式

  • X
    Zone offset
    Example:
        X       +09
        XX      +0930 
        XXX     +09:30
        XXX     -05:00
        XXXX    +093045
        XXXXX   +08:30:45