Eu tenho um LocalDate que precisa ser o primeiro e o último dia do mês. Como faço isso?
por exemplo. 13/2/2014
Eu preciso obter 1/2/2014
e 28/2/2014
nos formatos LocalDate .
Usando três classes LocalDate.
Basta usar withDayOfMonth
e lengthOfMonth()
:
LocalDate initial = LocalDate.of(2014, 2, 13);
LocalDate start = initial.withDayOfMonth(1);
LocalDate end = initial.withDayOfMonth(initial.lengthOfMonth());
A API foi projetada para oferecer suporte a uma solução que corresponda intimamente aos requisitos de negócios
No entanto, as soluções de Jon também são boas.
fonte
YearMonth
Para completude, e mais elegante na minha opinião, veja este uso de
YearMonth
classe.Para o primeiro e último dia do mês atual, isso se torna:
fonte
LocalDate
with
método?LocalDate
instância para começar.A resposta de Jon Skeets está certa e mereceu meu voto positivo, apenas adicionando esta solução ligeiramente diferente para completude:
fonte
Se alguém vier procurar o primeiro dia do mês anterior e o último dia do mês anterior :
fonte
fonte
Você pode tentar fazer isso para evitar a indicação de data personalizada e se houver necessidade de exibir as datas de início e término do mês atual:
Resultado:
fonte
Experimente isto:
você pode encontrar a saída desejada, mas precisa cuidar do parâmetro true / false para getLastDayOfMonth método
esse parâmetro denota ano bissexto
fonte
getLastDayOfMonth
- veja minha resposta para uma abordagem mais simples.se você quiser fazer isso apenas com a classe LocalDate:
fonte
Só aqui para mostrar minha implementação para a solução @herman
fonte
LocalDateTime
é exatamente a classe errada para usar aqui. Você está descartando informações valiosas de zona / deslocamento.Date
não tem nada a ver com a Questão e geralmente deve ser evitada.ZoneId.of("America/La_Paz")
. Para as datas atuais, ele dará o mesmo resultado, mas talvez não para datas históricas ou datas em um futuro futuro.