Класс LocalDateTime
Класс LocalDateTime хранит одновременно дату (год, месяц, день)
и время (часы, минуты, секунды, наносекунды), но без информации
о часовом поясе. Он неизменяем: все методы, которые изменяют дату
или время, возвращают новый объект LocalDateTime, а исходный
остается прежним. Объект создается с помощью статических методов
now (текущие дата и время), of (по числовым значениям)
и parse (из строки в формате ISO, например 2024-01-15T10:30).
Синтаксис
LocalDateTime.of(year, month, dayOfMonth, hour, minute)
LocalDateTime.of(year, month, dayOfMonth, hour, minute, second)
LocalDateTime.now()
LocalDateTime.parse("2024-01-15T10:30")
Пример
Давайте создадим объект LocalDateTime с конкретными
значениями даты и времени и выведем его на экран:
import java.time.LocalDateTime;
public class Main
{
public static void main(String[] args)
{
LocalDateTime dt = LocalDateTime.of(2024, 1, 15, 10, 30);
System.out.println(dt);
}
}
Результат выполнения кода:
"2024-01-15T10:30"
Пример
Теперь получим текущие дату и время с помощью метода now:
import java.time.LocalDateTime;
public class Main
{
public static void main(String[] args)
{
LocalDateTime now = LocalDateTime.now();
System.out.println(now);
}
}
Результат выполнения кода (зависит от момента запуска):
"2024-01-15T10:30:45.123"
Пример
Разберем LocalDateTime на отдельные части с помощью методов
getYear, getMonthValue, getDayOfMonth,
getHour и getMinute:
import java.time.LocalDateTime;
public class Main
{
public static void main(String[] args)
{
LocalDateTime dt = LocalDateTime.of(2024, 1, 15, 10, 30);
System.out.println(dt.getYear());
System.out.println(dt.getMonthValue());
System.out.println(dt.getDayOfMonth());
System.out.println(dt.getHour());
System.out.println(dt.getMinute());
}
}
Результат выполнения кода:
2024
1
15
10
30
Пример
Объект LocalDateTime неизменяем, поэтому метод
plusDays возвращает новый объект, а исходный не меняется:
import java.time.LocalDateTime;
public class Main
{
public static void main(String[] args)
{
LocalDateTime dt = LocalDateTime.of(2024, 1, 15, 10, 30);
LocalDateTime res = dt.plusDays(5);
System.out.println(dt);
System.out.println(res);
}
}
Результат выполнения кода:
"2024-01-15T10:30"
"2024-01-20T10:30"
Пример
Сравним два объекта LocalDateTime с помощью методов
isBefore и isAfter:
import java.time.LocalDateTime;
public class Main
{
public static void main(String[] args)
{
LocalDateTime dt1 = LocalDateTime.of(2024, 1, 15, 10, 30);
LocalDateTime dt2 = LocalDateTime.of(2024, 1, 20, 10, 30);
System.out.println(dt1.isBefore(dt2));
System.out.println(dt1.isAfter(dt2));
}
}
Результат выполнения кода:
true
false