Sobes.tech
Junior
119
questionbank

Что такое LocalDateTime в Java?

Ответ от нейросети

sobes.tech AI

LocalDateTime — это неизменяемый (immutable) класс в пакете java.time, представляющий дату и время без учета часового пояса. Он хранит дату в формате год-месяц-день и время в формате часы-минуты-секунды-наносекунды.

Основные методы и характеристики:

  • Создание:

    • now(): Получение текущей даты и времени на основе системных часов.
    • of(int year, int month, int dayOfMonth, int hour, int minute, int second, int nanoOfSecond): Создание экземпляра с заданными компонентами.
    • parse(CharSequence text): Разбор строки в формате ISO 8601 (yyyy-MM-dd'T'HH:mm:ss).
    // Creating LocalDateTime examples
    LocalDateTime now = LocalDateTime.now();
    LocalDateTime specific = LocalDateTime.of(2023, 10, 26, 10, 30, 0, 0);
    LocalDateTime parsed = LocalDateTime.parse("2023-10-26T10:30:00");
    
  • Получение компонентов:

    • getYear(), getMonth(), getDayOfMonth(), getHour(), getMinute(), getSecond(), getNano(): Извлечение отдельных частей даты и времени.
  • Манипуляции:

    • plusYears(), plusMonths(), plusDays(), plusHours(), plusMinutes(), plusSeconds(), plusNanos(): Добавление интервалов.
    • minusYears(), minusMonths(), minusDays(), minusHours(), minusMinutes(), minusSeconds(), minusNanos(): Вычитание интервалов.
    • withYear(), withMonth(), withDayOfMonth(), withHour(), withMinute(), withSecond(), withNano(): Создание нового экземпляра с измененным компонентом.
    // Manipulating LocalDateTime
    LocalDateTime future = now.plusHours(3).minusMinutes(15);
    LocalDateTime modified = now.withYear(2024);
    
  • Сравнение:

    • isAfter(), isBefore(), isEqual(): Сравнение с другим LocalDateTime.
  • Преобразование:

    • toLocalDate(): Получение только даты.
    • toLocalTime(): Получение только времени.
    • atZone(ZoneId zone): Преобразование в ZonedDateTime (с учетом часового пояса).
    // Conversions
    LocalDate datePart = now.toLocalDate();
    LocalTime timePart = now.toLocalTime();
    ZonedDateTime zonedDateTime = now.atZone(ZoneId.systemDefault());
    

LocalDateTime не содержит информации о часовом поясе и смещении от UTC, что делает его подходящим для хранения дат и времени, где эти аспекты не важны или определяются контекстом приложения. Для работы с конкретными моментами времени в разных часовых поясах следует использовать ZonedDateTime или OffsetDateTime.