当使用适用于UTC时区的日期适配器时,GSON会忽略setDateFormat

时间:2016-07-22 15:10:26

标签: java android json gson datetime-format

我将UTC中的datetime作为来自webservice的json字符串。我使用自己的日期反序列化器在本地日期时间转换字符串,如下所示:

public class DateDeserializer implements JsonDeserializer<Date> {

    private final SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    @Override
    public Date deserialize(JsonElement element, Type arg1, JsonDeserializationContext arg2) throws JsonParseException {

        sdf.setTimeZone(TimeZone.getTimeZone("UTC"));

        try {
            return sdf.parse(element.getAsString());
        } catch (ParseException e) {
            return null;
        }
    }
}

我需要使用自定义日期格式在本地日期时间(由系统时区指定)中显示日期时间。所以我创建了gson对象并使用了片段代码中给出的setDateFormat()。

public class OrdersList extends Fragment {
    private OrdersAdapter adapter;
    private List<OrdersData> ordersData = new ArrayList<>();
    private Type ctp = new TypeToken<Collection<OrdersData>>() {}.getType();

    Gson gson = new GsonBuilder().setDateFormat("MMM dd, yyyy KK:mm a").registerTypeAdapter(Date.class, new DateDeserializer()).create();
    //...
}

我的问题是我在TextView中获得的时间为 2016年5月10日星期二17:20:07 我希望它在哪里 2016年5月10日05:20 PM

由webservice 2016-05-10 11:50:07

提供的日期时间

0 个答案:

没有答案