У меня есть LocalDate, которому нужно получить первый и последний день месяца. Как я могу это сделать?
например. 13/2/2014
Мне нужно получить 1/2/2014
и 28/2/2014
в форматах LocalDate .
Использование трех десятков классов LocalDate.
Просто используйте withDayOfMonth
, и lengthOfMonth()
:
LocalDate initial = LocalDate.of(2014, 2, 13);
LocalDate start = initial.withDayOfMonth(1);
LocalDate end = initial.withDayOfMonth(initial.lengthOfMonth());
API был разработан для поддержки решения, максимально соответствующего бизнес-требованиям.
Однако решения Джона тоже хороши.
источник
YearMonth
Для полноты и элегантности, на мой взгляд, см. Использование
YearMonth
класса.Для первого и последнего дня текущего месяца это будет:
источник
LocalDate
with
методом?LocalDate
экземпляр для начала.Ответ Джона Скитса правильный и заслужил мое одобрение, просто добавив это немного другое решение для полноты:
источник
Если кто-то приходит и ищет первый день предыдущего месяца и последний день предыдущего месяца :
источник
источник
Вы можете попробовать это, чтобы не указывать произвольную дату и если необходимо отображать даты начала и окончания текущего месяца:
Результат:
источник
Попробуй это:
вы можете найти желаемый результат, но вам нужно позаботиться о параметре true / false для метода getLastDayOfMonth
этот параметр обозначает високосный год
источник
getLastDayOfMonth
- см. Мой ответ для более простого подхода.если вы хотите сделать это только с LocalDate-классом:
источник
Просто здесь, чтобы показать мою реализацию решения @herman
источник
LocalDateTime
- это совершенно неправильный класс для использования здесь. Вы отбрасываете ценную информацию о зоне / смещении.Date
не имеет ничего общего с Вопросом, и его обычно следует избегать.ZoneId.of("America/La_Paz")
. Для сегодняшних дат это даст тот же результат, но, возможно, не для исторических дат или дат в будущем.