Дисклеймер: у меня творческий кризис и я уже не знаю о чем писать, поэтому пишу о какой-то ерунде
Работа с датами — частая задача в разработке, и зачастую нам нужно преобразовывать даты из одного текстового формата в другой. В 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"