LocalDate, LocalTime, LocalDateTime
Представляйте даты и время
«LocalDate, LocalTime, LocalDateTime» — бесплатный урок Java Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Java Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Java Academy содержит 4 уроков всего.
Современный API дат
Начиная с Java 8 пакет java.time заменил старые и подверженные ошибкам классы Date и Calendar. Его основные типы — LocalDate, LocalTime и LocalDateTime.
Все они неизменяемы и безопасны при работе из разных потоков.
LocalDate
LocalDate представляет дату без компонента времени: год, месяц и день. LocalDate.now() возвращает сегодняшнюю дату, но в тестах следует использовать фиксированную дату, чтобы результат был предсказуемым.
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2026, 5, 30);
System.out.println(date);
}
}Чтение частей даты
Каждый компонент можно получить с помощью getYear, getMonthValue, getDayOfMonth и удобного метода getDayOfWeek.
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2026, 5, 30);
System.out.println(date.getYear());
System.out.println(date.getMonthValue());
System.out.println(date.getDayOfWeek());
}
}LocalTime
LocalTime представляет время суток без даты: часы, минуты, секунды и наносекунды.
import java.time.LocalTime;
public class Main {
public static void main(String[] args) {
LocalTime time = LocalTime.of(14, 30, 15);
System.out.println(time);
System.out.println(time.getHour());
}
}LocalDateTime
LocalDateTime объединяет дату и время в одно значение. При этом часовой пояс по-прежнему не указывается.
import java.time.LocalDateTime;
public class Main {
public static void main(String[] args) {
LocalDateTime dt = LocalDateTime.of(2026, 5, 30, 9, 45);
System.out.println(dt);
}
}Объединение даты и времени
Вы можете объединить LocalDate с LocalTime с помощью atTime, получив LocalDateTime.
import java.time.LocalDate;
import java.time.LocalTime;
import java.time.LocalDateTime;
public class Main {
public static void main(String[] args) {
LocalDate d = LocalDate.of(2026, 5, 30);
LocalTime t = LocalTime.of(8, 0);
LocalDateTime dt = d.atTime(t);
System.out.println(dt);
}
}Неизменяемость и with
Эти типы являются неизменяемыми. Методы, такие как withYear, возвращают новую изменённую копию, не изменяя исходное значение.
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
LocalDate original = LocalDate.of(2026, 5, 30);
LocalDate changed = original.withYear(2030);
System.out.println(original);
System.out.println(changed);
}
}Сравнение дат
Используйте isBefore, isAfter и isEqual, чтобы понятным образом сравнивать даты в хронологическом порядке.
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
LocalDate a = LocalDate.of(2026, 1, 1);
LocalDate b = LocalDate.of(2026, 12, 31);
System.out.println(a.isBefore(b));
System.out.println(a.isAfter(b));
}
}Полезные запросы
Вспомогательные методы отвечают на распространённые вопросы, например с помощью isLeapYear и lengthOfMonth.
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
LocalDate date = LocalDate.of(2024, 2, 1);
System.out.println(date.isLeapYear());
System.out.println(date.lengthOfMonth());
}
}Разбор текста
Каждый тип может разобрать строку в формате ISO. LocalDate.parse считывает значение, например 2026-05-30.
import java.time.LocalDate;
public class Main {
public static void main(String[] args) {
LocalDate date = LocalDate.parse("2026-05-30");
System.out.println(date.getMonth());
}
}Выбор подходящего типа
Используйте LocalDate для дней рождения и календарных дат, LocalTime — для часов работы, а LocalDateTime — для встречи, в которой сочетаются дата и время. Ни один из этих типов не содержит часовой пояс.
Быстрая проверка
Проверьте, насколько хорошо Вы усвоили основные типы для работы с датами и временем.
Итоги
Вы изучили основные типы java.time:
LocalDateиспользуется для дат,LocalTime— для времени, аLocalDateTime— для обоих значений- Все они неизменяемы; методы
withвозвращают новые копии - Получать отдельные части значения можно с помощью
getYear,getDayOfWeekи других похожих методов получения - Сравнивать значения можно с помощью
isBeforeиisAfter - Строки ISO разбираются с помощью
parse
Часто задаваемые вопросы
Урок «LocalDate, LocalTime, LocalDateTime» бесплатный?
Да — полный текст урока «LocalDate, LocalTime, LocalDateTime» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Java Academy, подпишись на CoddyKit PRO. Курс Java Academy содержит 4 уроков всего.
Чему я научусь в уроке «LocalDate, LocalTime, LocalDateTime»?
Представляйте даты и время Ты практикуешь Java Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Java Academy?
Предыдущий опыт не требуется. Java Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «LocalDate, LocalTime, LocalDateTime»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Java Academy?
Да. Каждый урок Java Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- LocalDate, LocalTime, LocalDateTime
- Instant и Duration
- Period и арифметика дат
- Форматирование с DateTimeFormatter