Java LocalDate

Узнайте о классе LocalDate в Java, о том, как создавать его экземпляры и других вариантах использования, таких как синтаксический анализ, форматирование и добавление продолжительности и периодов.

1. Обзор

Класс java.time.LocalDate, представленный в Java 8, представляет локальную дату без информации о времени и часовом поясе, например, '2019-03-27'. Мы можем использовать экземпляры LocalDate, когда нам нужно представить день без определенного времени дня — например, день рождения, праздник или отпуск, взятый сотрудником.

Обратите внимание, что экземпляры LocalDate являются неизменяемыми и потокобезопасными.

Ниже приведено объявление класса LocalDate в JDK.

public final class LocalDateextends Objectimplements Temporal, TemporalAdjuster, ChronoLocalDate, Serializable{//class body}

2. Создание экземпляра LocalDate

Как правило, мы будем создавать экземпляры LocalDate в двух условиях, а именно: получить текущую дату или создать LocalDate с заданными значениями дня, месяца и года.

2.1. Получить текущую дату

Используйте now() для получения сегодняшней даты. Чтобы получить дату в другом часовом поясе, передайте ZoneId в метод now().

LocalDate today = LocalDate.now();//Today's date in GMTLocalDate todayInGMT = LocalDate.now(ZoneId.of("GMT"));

2.2. Создать LocalDate со значениями

Чтобы создать локальную дату для определенного дня, месяца и года — используйте различные перегруженные фабричные методы of().

LocalDate today = LocalDate.of(2022, 1, 27);LocalDate today = LocalDate.of(2022, Month.JANUARY, 27)

Мы также можем получить экземпляр LocalDate, используя день эпохи.

LocalDate date = LocalDate.ofEpochDay(18823);

Другой интересный способ получить LocalDate — использовать день года. Например, 6 февраля 2022 года — 37-й день года.

LocalDate date = LocalDate.ofYearDay(2022, 37); //6th Feb 2022

3. Анализ строки в LocalDate

Класс LocalDate имеет два перегруженных метода parse() для преобразования строки в экземпляр LocalDate.

parse(CharSequence text) //1parse(CharSequence text, DateTimeFormatter formatter) //2
  • Используйте первый метод, если строка содержит дату в шаблоне ISO_LOCAL_DATE, т.е. гггг-ММ-дд. Это шаблон по умолчанию для локальных дат в Java.
  • Для любого другого шаблона даты нам нужно использовать второй метод, в котором мы передаем строку даты, а также форматировщик, который представляет пользовательский шаблон для этой строки даты.
LocalDate localDate = LocalDate.parse("2022-02-06");DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d-MMM-yyyy");LocalDate localDate = LocalDate.parse("6-Feb-2022", formatter);

4. Форматировать LocalDate в строку

Используйте метод LocalDate.format(DateTimeFormatter) для форматирования локальной даты в желаемое строковое представление.

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("d-MMM-yyyy");LocalDate today = LocalDate.now();String dateString = today.format(formatter); //23-Feb-2022

5. Сложение и вычитание LocalDate

LocalDate предоставляет следующие методы, которые возвращают новый и измененный экземпляр LocalDate относительно указанного экземпляра LocalDate.

  • plusDays()
  • plusWeeks()
  • plusМесяцы()
  • plusГоды()
  • minusDays()
  • minusWeeks()
  • минусМесяцы()
  • минусГоды()
LocalDate today = LocalDate.now();//Same date 3 years laterLocalDate localDate1 = today.plusYears(3);//local date before 3 monthsLocalDate localDate2 = today.minusMonths(3);

6. Примеры LocalDate

Давайте лучше разберем класс LocalDate, используя несколько примеров.

Прокрутить вверх