gpt4 book ai didi

java - Gson:为时间戳和时区设置日期格式化程序

转载 作者:太空宇宙 更新时间:2023-11-03 10:44:08 26 4
gpt4 key购买 nike

我应该为日期格式 1418805300000-0100 使用什么模式? (时间戳和时区)

GsonBuilder().setDateFormat("?????????????-Z")

解决方案:

  1. 使用适配器创建新的 GSON

    private static Gson createGson(){
    return new GsonBuilder().disableHtmlEscaping()
    .registerTypeHierarchyAdapter(Date.class, new DateTimeSerializer())
    .registerTypeHierarchyAdapter(Date.class, new DateTimeDeserializer())
    .create();
    }


    public static MyClass fromJson(String json) {
    return createGson().fromJson(json, MyClass.class);
    }

    public String toJson() {
    return createGson().toJson(this);
    }
  2. JSON 序列化器

    private static class DateTimeSerializer implements JsonSerializer<Date> {
    @Override
    public JsonElement serialize(Date src, Type typeOfSrc, JsonSerializationContext context) {
    // hodgie code
    return new JsonPrimitive(src.getTime() + new SimpleDateFormat("Z").format(src));
    }
    }
  3. 解串器

    private static class DateTimeDeserializer implements JsonDeserializer<Date> {

    @Override
    public Date deserialize(JsonElement json, Type typeOfT, JsonDeserializationContext context) throws JsonParseException {
    // hodgie code
    return new Date(Long.valueOf((json).getAsString().substring(0, 13)));
    }
    }

最佳答案

GsonBuilder#setDateFormat(String) 使用提供的 String 作为创建 SimpleDateFormat 实例的参数。 SimpleDateFormat 不提供任何用于生成时间戳的模式。您将无法通过 setDateFormat 实现您想要的效果。自定义 TypeAdapter 似乎很合适。

关于java - Gson:为时间戳和时区设置日期格式化程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27707918/

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