Вашу ошибку компилятора можно устранить с помощью , используя правильный тип .Не используйте java.util.Date
(как возвращено SimpleDateFormat
-parser), но используйте java.time.LocalDate
, который также предлагает прямой метод анализа, распознающий формат ISO yyyy-MM-dd.
Вместо
new SimpleDateFormat("yyyy-mm-dd").parse("2015-04-23");
use
LocalDate.parse("2015-04-23");
Другое дело:
Ваш последний пример кода ChronoUnit.DAYS.between(epo,epoDate);
не оценивает результат.Вы должны присвоить результат длинному примитиву для дальнейшей обработки.
О вашем комментарии относительно ввода с однозначным месяцем
Вы можете использовать перегруженный parse-метод принимает дополнительный аргумент форматера следующим образом:
LocalDate.parse("2015-4-23", DateTimeFormatter.ofPattern("uuuu-M-dd"));
Он также должен работать с двузначными месяцами.И я рекомендую присвоить объекту форматирования статическую конечную константу по соображениям производительности.