как преобразовать дату в другой формат

Рейтинг: -2Ответов: 1Опубликовано: 02.06.2023

Мне нужно преобразовать дату из строки формата 2 апреля 2023 г. в другой формат 02.04.2023

Ответы

▲ 2

Для парсинга даты следует воспользоваться 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