как преобразовать дату в другой формат
Мне нужно преобразовать дату из строки формата 2 апреля 2023 г.
в другой формат 02.04.2023
Источник: Stack Overflow на русском
Мне нужно преобразовать дату из строки формата 2 апреля 2023 г.
в другой формат 02.04.2023
Для парсинга даты следует воспользоваться Java Date/Time API с локализированным форматтером DateTimeFormatter.ofPattern(String pattern, Locale locale)
, затем отформатировать полученный экземпляр LocalDate
в другом нужном формате dd.MM.yyyy
:
import java.time.LocalDate;
import java.time.format.*;
import java.util.*;
String str = "20 апреля 2023 г.";
DateTimeFormatter formatter = DateTimeFormatter.ofPattern(
"dd MMMM yyyy г.", new Locale("ru", "RU")
);
DateTimeFormatter to = DateTimeFormatter.ofPattern("dd.MM.yyy");
LocalDate d = LocalDate.parse(str, formatter);
System.out.println("Дата: " + d + " -> " + d.format(to));
Дата: 2023-04-20 -> 20.04.2023
Если необходимо получить класс java.util.Date
при помощи локализованного экземпляра SimpleDateFormat
, это можно сделать аналогично:
SimpleDateFormat sdFrom = new SimpleDateFormat(
"dd MMMM yyyy г.", new Locale("ru", "RU")
);
SimpleDateFormat sdTo = new SimpleDateFormat("dd.MM.yyyy");
Date dd = sdFrom.parse(str);
System.out.println(dd + " -> " + sdTo.format(dd));
// -> Thu Apr 20 00:00:00 GMT 2023 -> 20.04.2023