С Date
объекты не сохраняют информацию о часовом поясе, вам необходимо конкретно установить смещение часового пояса исходной даты в целевой форматтер. Вот полный код для преобразования из одного формата в другой при сохранении смещения часового пояса (+0000 в вашем случае). Более подробную информацию о TimeZone
класс here и о том, как построить правильную строку даты и времени для вашего требования here.
try {
DateFormat originalFormat = new SimpleDateFormat(
"yyyy-MM-dd'T'HH:mm:ssZ", Locale.ENGLISH);
DateFormat targetFormat = new SimpleDateFormat(
"MMM dd, yyyy K:mm a", Locale.ENGLISH);
targetFormat.setTimeZone(TimeZone.getTimeZone("GMT+0000"));
Date date = originalFormat.parse("2014-10-11T17:00:41+0000");
String formattedDate = targetFormat.format(date);
System.out.println(formattedDate);
} catch (ParseException e) {
e.printStackTrace();
}
Выход: 11 октября 2014 5:00 вечера
Использование Formatter в Java: http://docs.oracle.com/javase/7/docs/api/java/util/Formatter. html это вариант по крайней мере. String.format() может делать то, что вам нужно, но не дает эффективности Formatter (через http://stackoverflow.com/questions/513600/should-i-use-javas-string-format-if -производство-важно) – zgc7009
Dare Я предлагаю использовать jodatime? –