Отличный ответ, большое спасибо, изменение DateTimeZone.forID работает хорошо. очень детальная прогулка, которую я также буду использовать в будущем, без сомнения: D: D
лизирую несколько новостных лент, и pubDate каждого элемента соответствует одному и тому же формату:
Вс, 11 июня 2017 18:18:23 +0000
К сожалению, один канал не делает:
Суббота, 10 июня 2017 12:49:45 EST
Я пытался разобрать дату без удачи с помощью androids java date иSimpleDateFormat
:
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();
}
Какие броски и ошибки:
java.text.ParseException: не разбираемая дата: "сб, 3 июня 2017 19:53:09 EST" (по смещению 26)
Я также попытался сделать это, используя время 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);
Который выдает ошибку:
Вызвано: java.lang.IllegalArgumentException: неверный формат: «сб, 10 июня 2017 12:49:45 EST» искажен в «EST»
Кто-нибудь сталкивался с этим раньше?