Estoy tratando de calcular el número de días entre dos fechas dadas utilizando el procesamiento 3. Pero estoy frente a un problema con la biblioteca de la fecha.
import java.text.SimpleDateFormat;
import java.util.Date;
import java.time.LocalDate;
import java.time.Month;
import java.time.temporal.ChronoUnit;
Date epoDate = new Date();
Date epo = new Date();
try {
epoDate = new SimpleDateFormat("yyyy-mm-dd").parse("2015-01-03");
epo = new SimpleDateFormat("yyyy-mm-dd").parse("2015-04-23");
}
catch (Exception e) {
}
ChronoUnit.DAYS.between(epo,epoDate);
}
el problema está en la última línea de la función entre donde dice que requiere 2 temporal como entradas?
Su error del compilador se puede resolver mediante el uso del tipo correcto . No utilizar java.util.Date
(tal como lo devuelve SimpleDateFormat
-parser) pero el uso java.time.LocalDate
que también ofrece un análisis sintáctico-método directo reconocer la norma ISO-formato aaaa-MM-dd.
En lugar de
new SimpleDateFormat("yyyy-mm-dd").parse("2015-04-23");
utilizar
LocalDate.parse("2015-04-23");
Otra cosa:
El código de ejemplo final ChronoUnit.DAYS.between(epo,epoDate);
no evalúa el resultado. Debe asignar el resultado a un largo primitiva para su posterior procesamiento.
Acerca de su comentario sobre la entrada con un dígito meses
Se puede utilizar el análisis sintáctico-método sobrecargado aceptar un argumento adicional formateador de esta manera:
LocalDate.parse("2015-4-23", DateTimeFormatter.ofPattern("uuuu-M-dd"));
También debe trabajar con dos dígitos meses. Y recomiendo a asignar el objeto formateador a una constante static final por razones de rendimiento.