Основная проблема здесь в том, что ваша строка формата даты использует чч (12-часовой формат) вместо чч (24-часовой)
Во-вторых, ваш формат даты должен указывать, что ваша строка даты содержит часовой пояс.
(В качестве альтернативы вы можете раскомментировать закомментированную строку, чтобы указать правильный часовой пояс).
В-третьих, вы должны использовать DateFormat для вывода времени на экран, а также ...
Наконец, UTC = GMT, поэтому время UTC также составляет 14: 19: 56
(GMT, «Британское зимнее время» совпадает с UTC, тогда как BST на час впереди)
public class DateFormatTest {
public static String DATE_FORMAT="dd MMM yyyy HH:mm:ss z";
public static String CURRENT_DATE_STRING ="31 October 2011 14:19:56 GMT";
public static void main(String[] args) throws ParseException {
DateFormat dateFormat = new SimpleDateFormat(DATE_FORMAT);
//dateFormat.setTimeZone(TimeZone.getTimeZone("GMT"));
Date d= dateFormat.parse(CURRENT_DATE_STRING);
dateFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
System.out.println(dateFormat.format(d));
}
}
Вывод: 31 Oct 2011 14:19:56 UTC
НТН