Twidere-App-Android-Twitter.../twidere.component.common/src/main/java/org/mariotaku/twidere/api/twitter/util/TwitterTrendsDateConverter....

42 lines
1.6 KiB
Java

package org.mariotaku.twidere.api.twitter.util;
import com.bluelinelabs.logansquare.typeconverters.TypeConverter;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;
public class TwitterTrendsDateConverter implements TypeConverter<Date> {
private static final Object FORMATTER_LOCK = new Object();
private static final SimpleDateFormat DATE_FORMAT_1 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'", Locale.ENGLISH);
private static final SimpleDateFormat DATE_FORMAT_2 = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss z", Locale.ENGLISH);
public Date parse(JsonParser jsonParser) throws IOException {
String dateString = jsonParser.getValueAsString(null);
if (dateString == null) throw new IOException();
try {
synchronized (FORMATTER_LOCK) {
switch (dateString.length()) {
case 10:
return new Date(Long.parseLong(dateString) * 1000);
case 20:
return DATE_FORMAT_1.parse(dateString);
default:
return DATE_FORMAT_2.parse(dateString);
}
}
} catch (ParseException e) {
throw new IOException(e);
}
}
public void serialize(Date object, String fieldName, boolean writeFieldNameForObject, JsonGenerator jsonGenerator) {
throw new UnsupportedOperationException();
}
}