Я даю современный ответ. Никто не должен больше использовать SimpleDateFormat
.
java.time
Анализ текста.
String dateTimeValue = "2010-07-26T11:37:52Z";
OffsetDateTime dateTime = OffsetDateTime.parse(dateTimeValue);
Генерация текста.
DateTimeFormatter dateFormatter =
DateTimeFormatter.ofPattern(
"dd-MMM-uuuu",
Locale.forLanguageTag("pt-BR")
);
String wantedFormattedDate = dateTime.format(dateFormatter);
Выход:
System.out.println(wantedFormattedDate);
26-июль-2010
Сокращение месяца в выходных данных зависит от предоставленной локали (бразильский португальский в моем примере).
Я использую тот факт, что ваша дата-время имеет формат ISO 8601, формат, который классы java.time анализируют (и также печатают) как их значения по умолчанию, то есть без какого-либо явного форматера.
Избегайте использования класса SimpleDateFormat
, используемого в других ответах. Этот класс, как известно, проблематичен и давно устарел.
Обычно вы не хотите преобразовывать дату и время из строки в одном формате в строку в другом формате. В вашей программе сохраните дату и время как объект даты и времени, например, Instant
или OffsetDateTime
. Только когда вам нужно выдать строку, отформатируйте дату в одну.
Ссылки