Нужно получить начальное и конечное время текущего месяца

Всем привет. Разбираюсь с вопросом времени в java. Нашел пару интересных задач, но одну мне кажется делаю не правильно. Надо получить начальное и конечное время текущего месяца (сек мин часы дни). Я сделал это как в примере ниже, но это немного по читерски. Как это сделать лучше ?

YearMonth month = YearMonth.now();

String first = month.atDay(1).toString(),

last = month.atEndOfMonth().toString();

    System.out.println(first);
    System.out.println(last);

Ответы (2 шт):

Автор решения: Denisqqa

Можно использовать TemporalAdjusters:

private static String getEndOfCurrentMonth() { //последний день месяца
return LocalDate.now()
    .with(TemporalAdjusters.lastDayOfMonth())
    .toString();
  }
private static String getStartOfCurrentMonth() { //первый день месяца
return LocalDate.now()
    .with(TemporalAdjusters.firstDayOfMonth())
    .toString();
  }

PS но и ваш вариант тоже работает.

→ Ссылка
Автор решения: Alex Rudenko

Если задача состоит в получении именно времени, а не только даты первого и последнего дня текущего месяца, то следует применить ещё пару читерских методов для конвертации LocalDate в LocalDateTime:

LocalDateTime f = month.atDay(1).atStartOfDay();
System.out.println(f); // 2021-10-01T00:00
LocalDateTime e = month.atEndOfMonth().atTime(LocalTime.now());
System.out.println(e); // 2021-10-31T19:42:05.477406700

Также можно сконвертировать дату в OffsetDateTime при помощи метода LocalDate::atTime(OffsetTime off)

→ Ссылка