我将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
提供的日期时间