Класс LocalDateTime
Класс LocalDateTime представляет комбинацию даты и времени без привязки к часовому поясу.
Он хранит год, месяц, день, час, минуту, секунду и наносекунду.
Объекты LocalDateTime являются неизменяемыми и потокобезопасными.
Импорт
import java.time.LocalDateTime
Синтаксис создания
// Текущая дата и время
val now = LocalDateTime.now()
// Из компонентов даты и времени
val dateTime = LocalDateTime.of(2025, 12, 31, 23, 59, 30)
// Парсинг из строки ISO-8601
val parsed = LocalDateTime.parse("2025-12-31T23:59:30")
// Парсинг с кастомным форматтером
val formatter = DateTimeFormatter.ofPattern("dd/MM/yyyy HH:mm:ss")
val customParsed = LocalDateTime.parse("31/12/2025 23:59:30", formatter)
Пример
Создадим объект LocalDateTime с текущей датой и временем:
val currentDateTime = LocalDateTime.now()
println(currentDateTime)
Результат выполнения кода:
String "2025-09-10T14:30:45.123456789"
Пример
Создадим конкретную дату и время с помощью метода of:
val newYear = LocalDateTime.of(2025, 12, 31, 23, 59, 59)
println(newYear)
Результат выполнения кода:
String "2025-12-31T23:59:59"
Пример
Распарсим строку в формате ISO-8601:
val dateTimeStr = "2025-07-15T14:30:45"
val dateTime = LocalDateTime.parse(dateTimeStr)
println(dateTime)
Результат выполнения кода:
String "2025-07-15T14:30:45"
Пример
Получим отдельные компоненты даты и времени:
val dateTime = LocalDateTime.of(2025, 12, 31, 23, 59, 30)
val year = dateTime.year
val month = dateTime.monthValue
val day = dateTime.dayOfMonth
val hour = dateTime.hour
val minute = dateTime.minute
val second = dateTime.second
println("$year-$month-$day $hour:$minute:$second")
Результат выполнения кода:
String "2025-12-31 23:59:30"
Пример
Изменим дату и время с помощью методов:
val dateTime = LocalDateTime.of(2025, 12, 31, 23, 59, 30)
val nextDay = dateTime.plusDays(1)
val prevHour = dateTime.minusHours(1)
val nextYear = dateTime.plusYears(1)
println("Original: $dateTime")
println("Next day: $nextDay")
println("Prev hour: $prevHour")
println("Next year: $nextYear")
Результат выполнения кода:
String "Original: 2025-12-31T23:59:30"
String "Next day: 2026-01-01T23:59:30"
String "Prev hour: 2025-12-31T22:59:30"
String "Next year: 2026-12-31T23:59:30"
Пример
Сравним две даты и времени:
val dateTime1 = LocalDateTime.of(2025, 12, 31, 23, 59, 30)
val dateTime2 = LocalDateTime.of(2026, 1, 1, 0, 0, 0)
val isBefore = dateTime1.isBefore(dateTime2)
val isAfter = dateTime1.isAfter(dateTime2)
val isEqual = dateTime1.isEqual(dateTime2)
println("Is before: $isBefore")
println("Is after: $isAfter")
println("Is equal: $isEqual")
Результат выполнения кода:
String "Is before: true"
String "Is after: false"
String "Is equal: false"