java-在gsonretrofit中,是否有内置方法来处理各种格式的日期?

java-在gsonretrofit中,是否有内置方法来处理各种格式的日期?,第1张

概述我当前使用的api以“yyyy-MM-dd”的形式以及典型的ISO8601格式“2012-06-08T12:27”返回日期(出于这个问题,日期和日期时间相同):29.000-04:00”您如何“干净”地设置GSON来处理此问题?还是我最好的方法是使用模型对象中的一些自定义getter将日期视为字符串并以所需的特定形式输出?

我当前使用的API以“ yyyy-MM-dd”的形式以及典型的ISO8601格式“ 2012-06-08T12:27”返回日期(出于这个问题,日期和日期时间相同) :29.000-04:00”

您如何“干净”地设置GSON来处理此问题?还是我最好的方法是使用模型对象中的一些自定义getter将日期视为字符串并以所需的特定形式输出?

我目前正在执行以下 *** 作,但是只要看到“ yyyy-MM-dd”字段,解析就会失败.

return new GsonBuilder()    .setFIEldNamingPolicy(FIEldNamingPolicy.LOWER_CASE_WITH_UNDERscoreS)    .setDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ")    .create();

我最终将在AndroID Retrofit上下文中使用它,以防通过该途径有可用的解决方案.

编辑:根据以下建议,我创建了一个自定义TypeAdapter.我的完整解决方案可以在这里看到:https://gist.github.com/loeschg/2967da6c2029ca215258.

解决方法:

我会那样做:(尽管未测试):

SimpleDateFormat[] formats = new SimpleDateFormat[] {    new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSSZ"),    // Others formats go here};// ...return new GsonBuilder()    .registerTypeAdapter(Date.class, new TypeAdapter<Date>() {        @OverrIDe        public Date read(JsonReader reader) throws IOException {            if (reader.peek() == JsonToken.NulL) {                reader.nextNull();                return null;            }            String dateAsstring = reader.nextString();            for (SimpleDateFormat format : formats) {                try {                    return format.parse(dateAsstring);                } catch (ParseException e) {}  // Ignore that, try next format            }            // No matching format found!            return null;        }    })    .create();

尝试多种格式的自定义类型适配器.

总结

以上是内存溢出为你收集整理的java-在gson / retrofit中,是否有内置方法来处理各种格式的日期?全部内容,希望文章能够帮你解决java-在gson / retrofit中,是否有内置方法来处理各种格式的日期?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1079356.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-27
下一篇 2022-05-27

发表评论

登录后才能评论

评论列表(0条)

保存