Что это и зачем нужно?
Работа с датами и временем — одна из самых частых задач в программировании на Java. Стандартная библиотека java.time (введена в Java 8) предоставляет мощный и интуитивно понятный API для обработки дат, времени, временных зон и периодов. До Java 8 разработчики часто использовали стороннюю библиотеку Joda-Time, которая стала прототипом для java.time. Обе библиотеки решают проблемы старого java.util.Date и java.util.Calendar: потокобезопасность, неизменяемость объектов и удобные методы форматирования.
Как установить?
java.time встроен в Java 8 и новее — установка не требуется. Для Joda-Time добавьте зависимость в Maven:
<dependency>
<groupId>joda-time</groupId>
<artifactId>joda-time</artifactId>
<version>2.12.5</version>
</dependency>Для Gradle: implementation 'joda-time:joda-time:2.12.5'.
Основные функции
- LocalDate, LocalTime, LocalDateTime — работа с датой/временем без временной зоны.
- ZonedDateTime, OffsetDateTime — учёт часовых поясов.
- Period, Duration — разница между датами и временем.
- DateTimeFormatter — гибкое форматирование и парсинг.
- Instant — момент времени в UTC.
Пример кода на Java
import java.time.*;
import java.time.format.DateTimeFormatter;
public class DateExample {
public static void main(String[] args) {
// Текущая дата
LocalDate today = LocalDate.now();
System.out.println("Сегодня: " + today);
// Создание конкретной даты
LocalDate specificDate = LocalDate.of(2025, Month.MARCH, 15);
System.out.println("Конкретная дата: " + specificDate);
// Разница между датами
Period period = Period.between(specificDate, today);
System.out.println("Разница: " + period.getYears() + " лет, " + period.getMonths() + " месяцев, " + period.getDays() + " дней");
// Форматирование
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd.MM.yyyy");
String formatted = today.format(formatter);
System.out.println("Отформатировано: " + formatted);
// Парсинг строки
LocalDate parsed = LocalDate.parse("01.01.2024", formatter);
System.out.println("Распарсено: " + parsed);
// Работа с временем и зонами
ZonedDateTime zoned = ZonedDateTime.now(ZoneId.of("Europe/Moscow"));
System.out.println("Московское время: " + zoned);
}
}Когда использовать
java.time — основной выбор для всех новых проектов на Java 8+. Используйте его для: расчёта возраста, дедлайнов, логов с таймстемпами, планировщиков задач, работы с календарями и временными зонами. Joda-Time полезна для поддержки старых проектов или если нужны дополнительные функции, например, Interval или MutableDateTime. Обе библиотеки значительно упрощают код по сравнению с устаревшим Calendar.
Также в библиотеке
Валидация данных в TypeScript: библиотеки Zod, Yup и io-ts
Работа с CSV в Java: полное руководство по чтению и записи
Работа с Excel в JavaScript (Node.js): библиотеки и примеры кода
Bull для JavaScript (Node.js): полное руководство с примерами