null

Как конвертировать дату из одного формата в другой в Java

Дисклеймер: у меня творческий кризис и я уже не знаю о чем писать, поэтому пишу о какой-то ерунде
Работа с датами — частая задача в разработке, и зачастую нам нужно преобразовывать даты из одного текстового формата в другой. В Java для этой цели можно использовать классы SimpleDateFormat из пакета java.text (для версий до Java 8) и DateTimeFormatter из пакета java.time (начиная с Java 8). В этой статье мы рассмотрим оба подхода и научимся конвертировать дату из одного формата в другой
 

1. Конвертация даты с использованием SimpleDateFormat

Для начала создадим два объекта SimpleDateFormat: один для исходного формата даты, а другой — для целевого, после чего можно преобразовывать даты
 

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class DateFormatExample {
    public static void main(String[] args) {
        // Исходный формат даты
        String inputDateStr = "2024-09-02 15:30:00";
        SimpleDateFormat inputFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        
        // Целевой формат даты
        SimpleDateFormat outputFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm");

        try {
            // Преобразование строки в дату
            Date date = inputFormat.parse(inputDateStr);

            // Преобразование даты в строку нужного формата
            String outputDateStr = outputFormat.format(date);
            
            // Результат
            System.out.println("Исходная дата: " + inputDateStr);
            System.out.println("Преобразованная дата: " + outputDateStr);
        } catch (ParseException e) {
            e.printStackTrace();
        }
    }
}

 

Здесь:

  • parse(String source) — метод для преобразования строки в объект Date
  • format(Date date) — метод для преобразования объекта Date в строку нужного формата
  • ParseException выбрасывается, если строка не соответствует исходному формату

В данном примере исходная строка даты "2024-09-02 15:30:00" преобразуется в формат "dd/MM/yyyy HH:mm", результатом будет строка "02/09/2024 15:30"
 

2. Конвертация даты с использованием DateTimeFormatter

 

Класс DateTimeFormatter из этого пакета позволяет более гибко и безопасно работать с форматированием дат.
 

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public class DateTimeFormatterExample {
    public static void main(String[] args) {
        // Исходный формат даты
        String inputDateStr = "2024-09-02 15:30:00";
        DateTimeFormatter inputFormatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");

        // Целевой формат даты
        DateTimeFormatter outputFormatter = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm");

        // Преобразование строки в объект LocalDateTime
        LocalDateTime dateTime = LocalDateTime.parse(inputDateStr, inputFormatter);

        // Преобразование LocalDateTime в строку нужного формата
        String outputDateStr = dateTime.format(outputFormatter);

        // Результат
        System.out.println("Исходная дата: " + inputDateStr);
        System.out.println("Преобразованная дата: " + outputDateStr);
    }
}

Здесь:

  • parse(CharSequence text, DateTimeFormatter formatter) — метод для преобразования строки в объект LocalDateTime
  • format(DateTimeFormatter formatter) — метод для преобразования объекта LocalDateTime в строку нужного формата
  • DateTimeFormatter является потокобезопасным и более удобным в использовании по сравнению с SimpleDateFormat

 

В этом примере, как и ранее, мы преобразуем строку "2024-09-02 15:30:00" в формат "dd/MM/yyyy HH:mm", получая строку "02/09/2024 15:30"