Erro de análise da hora da data e da conversão do Android (até a hora do joda tentada)
Estou analisando vários feeds de notícias e o pubDate de cada item segue o mesmo formato:
Dom, 11 de junho de 2017 18:18:23 +0000
Infelizmente, um feed não:
Sábado, 10 de junho de 2017 12:49:45 EST
Eu tentei analisar a data sem sorte usando androids data java eSimpleDateFormat
:
try {
Calendar cal = Calendar.getInstance();
TimeZone tz = cal.getTimeZone();
SimpleDateFormat readDate = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
readDate.setTimeZone(TimeZone.getTimeZone("UTC"));
Date date = readDate.parse(rssDateTime);
SimpleDateFormat writeDate = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z");
writeDate.setTimeZone(tz);
parsedDate = writeDate.format(date);
} catch (ParseException e) {
e.printStackTrace();
}
Que joga e erro:
java.text.ParseException: data imperceptível: "sáb, 3 de jun de 2017 19:53:09 EST" (no deslocamento 26)
Eu também tentei fazer isso usando o tempo joda:
DateTime dtUTC = null;
DateTimeZone timezone = DateTimeZone.getDefault();
DateTimeFormatter formatDT = DateTimeFormat.forPattern("EEE, d MMM yyyy HH:mm:ss Z");
DateTime dtRssDateTime = formatDT.parseDateTime(rssDateTime);
DateTime now = new DateTime();
DateTime nowUTC = new LocalDateTime(now).toDateTime(DateTimeZone.UTC);
long instant = now.getMillis();
long instantUTC = nowUTC.getMillis();
long offset = instantUTC - instant;
dtUTC = dtRssDateTime.withZoneRetainFields(timezone);
dtUTC = dtUTC.minusMillis((int) offset);
String returnTimeDate = "";
returnTimeDate = dtUTC.toString(formatDT);
O que gera um erro:
Causado por: java.lang.IllegalArgumentException: formato inválido: "sáb, 10 jun 2017 12:49:45 EST" está incorreto em "EST"
Alguém encontrou isso antes?