Sie können dies ganz einfach tun, indem Sie einen benutzerdefinierten GsonConverter mit Ihrem eigenen Gson-Objekt auf der Retrofit-Instanz einrichten. In Ihrem POJO können Sie Date created_at;
statt einer langen oder einer Zeichenfolge. Vom Datumsobjekt können Sie created_at.getTime()
verwenden, um bei Bedarf die Länge zu erhalten.
Gson gson = new GsonBuilder()
.setDateFormat("yyyy-MM-dd'T'HH:mm:ssz")
.create();
RestAdapter.Builder builder = new RestAdapter.Builder();
// Use a custom GSON converter
builder.setConverter(new GsonConverter(gson));
..... create retrofit service.
Sie auch mehrere Datum String-Formate durch die Registrierung eines benutzerdefinierten JsonDeserializer
auf der Gson Instanz verwendet durch Nachrüstung
GsonBuilder gsonBuilder = new GsonBuilder();
gsonBuilder.registerTypeAdapter(Date.class, new DateTypeDeserializer());
public class DateTypeDeserializer implements JsonDeserializer<Date> {
private static final String[] DATE_FORMATS = new String[]{
"yyyy-MM-dd'T'HH:mm:ssZ",
"yyyy-MM-dd'T'HH:mm:ss",
"yyyy-MM-dd",
"EEE MMM dd HH:mm:ss z yyyy",
"HH:mm:ss",
"MM/dd/yyyy HH:mm:ss aaa",
"yyyy-MM-dd'T'HH:mm:ss.SSSSSS",
"yyyy-MM-dd'T'HH:mm:ss.SSSSSSS",
"yyyy-MM-dd'T'HH:mm:ss.SSSSSSS'Z'",
"MMM d',' yyyy H:mm:ss a"
};
@Override
public Date deserialize(JsonElement jsonElement, Type typeOF, JsonDeserializationContext context) throws JsonParseException {
for (String format : DATE_FORMATS) {
try {
return new SimpleDateFormat(format, Locale.US).parse(jsonElement.getAsString());
} catch (ParseException e) {
}
}
throw new JsonParseException("Unparseable date: \"" + jsonElement.getAsString()
+ "\". Supported formats: \n" + Arrays.toString(DATE_FORMATS));
}
}
Sie einen benutzerdefinierten Typ-Wandler verwenden können (aber ich weiß nicht, wie man eines von diesen auf ein bestimmtes Feld statt auf einen ganzen Typ beschränkt) – njzk2
als Randnotiz, dieses 'Z' sieht st Angebot. Ich würde auf ein Formatierungsproblem auf der Serverseite wetten. – njzk2
das 'Z' bedeutet einfach, es gibt keinen Offset von UTC - mehr Infos von [wikipedia] (http://en.wikipedia.org/wiki/ISO_8601#UTC) –