Статьи Утилиты Telegram YouTube Отзывы

Как получить последний день месяца

30 сентября 2020

Тэги: Java, Kotlin.

При работе с датами часто бывает нужно получить последний день текущего месяца или года. Поскольку последний день года всегда равен 31 декабря, то мы можем напрямую создать эту дату с помощью метода LocalDate.of(). А вот последний день месяца зависит от конкретного месяца. Дней в месяце может быть 30 или 31, а для февраля и вовсе 28 или 29.

Чтобы не разбираться в логике работы календаря, начиная с Java 8 (а, значит, и в Kotlin) нам доступен специальный класс TemporalAdjusters. Он имеет несколько полезных методов, но в данном случае нас интересует lastDayOfMonth(), возвращающий специальный объект с интерфейсом TemporalAdjuster. Этот интерфейс содержит метод adjustInto(), который позволяет «выравнивать» любую переданную ему дату (или дату со временем) по определённому правилу. В нашем случае дата будет выровнена по последнему дню месяца.

val lastDateOfCurrentMonth = TemporalAdjusters.lastDayOfMonth()
    .adjustInto(LocalDate.now()) // выравниваем текущую дату
val lastDateTimeOfCurrentMonth = TemporalAdjusters.lastDayOfMonth()
    .adjustInto(LocalDateTime.now()) // выравниваем текущую дату и время

Как видите, метод adjustInto() одинаково хорошо работает и с датой, и с датой и временем. В последнем случае выравнивается только дата. Время остаётся без изменений.

Помимо метода lastDayOfMonth(), класс TemporalAdjusters предлагает также и другие методы с говорящими названиями:

  • lastDayOfYear() – последний день года
  • firstDayOfMonth() – первый день месяца
  • firstDayOfNextMonth() – первый день следующего месяца
  • firstDayOfYear() – первый день года
  • firstDayOfNextYear() – первый день следующего года

Но остальные «выравниватели» менее интересны, т.к. первый день месяца или года всегда равен 1, а последний день года всегда равен 31.


Облако тэгов

Kotlin, Java, Spring, Spring Boot, Spring Data, SQL, PostgreSQL, Oracle, Linux, Hibernate, Collections, Stream API, многопоточность, файлы, Nginx, Apache, maven, gradle, JUnit, YouTube, новости, руководство, ООП, алгоритмы, головоломки, rest, GraphQL, Excel, XML, json, yaml.

Последние статьи


Комментарии

Добавить комментарий

×

devmark.ru