Come creare 2 java (data minima e massima) che coprono esattamente l'intero mese [duplicato]
Su Java, lo faccio
Date minDate = new Date(year,month,1);
Date maxDate = new Date(year,month,31);
per filtrare gli ordini dal giorno 1 al giorno 31. Ma per alcuni mesi (che ha 30 giorni) e per febbraio che ha meno, questo finisce per trovare ordini dal giorno 1, 2, e anche 3, del mese successivo.
Come posso creare un minDatee maxDateche copra esattamente l'intero mese?
Questi valori di dati vengono letti da mongodb sull'altro lato, ma mi piacerebbe farlo nel lato Java, se possibile.
Risposte
java.util.Dateè deprecato e per una buona ragione. Sul mio Scala REPL locale:
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 hai JShell, dovresti vedere qualcosa di simile.
Ok, quindi non l'intera Dateclasse è deprecata, ma quasi tutti i suoi costruttori e molti dei suoi getter e setter. Forse java.time.LocalDatefunzionerà meglio per te.
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
Vedi, non c'è bisogno di sottrarre 1900 dall'anno. Facile, arioso, bello.