Como criar 2 java (data mínima e máxima) que abrangem o mês inteiro exatamente [duplicado]
Em Java, eu faço
Date minDate = new Date(year,month,1);
Date maxDate = new Date(year,month,31);
para filtrar os pedidos do dia 1 ao 31. Mas para alguns meses (que tem 30 dias) e para fevereiro que tem menos, isso acaba encontrando pedidos do dia 1, 2, e até 3, do mês seguinte.
Como posso criar um minDatee maxDateque abranja exatamente o mês inteiro?
Esses valores de dados são lidos por mongodb no outro lado, mas eu gostaria de fazer isso no lado java, se possível.
Respostas
java.util.Dateestá obsoleto e por um bom motivo. No meu Scala REPL local:
scala> import java.util.Date
import java.util.Date
scala> new Date(120, 9, 1, 0, 0)
^
warning: constructor Date in class Date is deprecated: see corresponding Javadoc
for more information.
res3: java.util.Date = Thu Oct 01 00:00:00 EDT 2020
scala> new Date(120, 9, 31, 23, 59)
^
warning: constructor Date in class Date is deprecated: see corresponding Javadoc
for more information.
res4: java.util.Date = Sat Oct 31 23:59:00 EDT 2020
Se você tiver JShell, deverá ver algo semelhante.
Ok, então nem toda a Dateclasse está obsoleta, mas quase todos os seus construtores e vários de seus getters e setters. Talvez java.time.LocalDatefuncione melhor para você.
scala> import java.time.LocalDate
import java.time.LocalDate
scala> LocalDate.of(2020, 10, 1)
res5: java.time.LocalDate = 2020-10-01
scala> LocalDate.of(2020, 10, 31)
res6: java.time.LocalDate = 2020-10-31
Veja, não há necessidade de subtrair 1900 do ano. Fácil, arejado, lindo.