Я работаю над приложением Java и у меня есть некоторые проблемы при попытке создать Даты объекта:Почему я получаю эту ошибку, когда пытаюсь создать объект Java.utile.Date из строки?
Так что я сделал:
Calendar dataRendimentoLordoCertificatoCalendar = Calendar.getInstance();
dataRendimentoLordoCertificatoCalendar.set(annoCorrente - 1, 10, 01);
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date dataRendimentoLordoCertifiacato = new Date(sdf.format(dataRendimentoLordoCertificatoCalendar.getTime()));
Использование отладчика Eclipse, я могу видеть, что значение sdf.format (dataRendimentoLordoCertificatoCalendar.getTime()) (передается в качестве параметра в Дата конструкторе) является 2015-11-01 (и это то, что я ожидаю: первый из Noveember 2015).
Проблема заключается в том, что, когда эта линия выполняется:
Date dataRendimentoLordoCertifiacato = new Date(sdf.format(dataRendimentoLordoCertificatoCalendar.getTime()));
я получаю это исключение:
Exception in thread "main" java.lang.IllegalArgumentException
at java.util.Date.parse(Date.java:598)
at java.util.Date.<init>(Date.java:255)
at com.mycompany.dbmanager.MyProject.getRendimentoLordoCertificato(PucManager.java:64)
Почему? Что мне не хватает? Как я могу исправить эту проблему?
Tnx
Что на земле вы пытаетесь сделать? 'dataRendimentoLordoCertificatoCalendar.getTime()' is ** уже ** a 'Date'. Постскриптум с выпуском Java 8, я настоятельно рекомендую вам избегать «Date» и «Calendar», как если бы это было возможно. –
* «Я вижу, что значение sdf.format (dataRendimentoLordoCertificatoCalendar.getTime()) (передано как параметр конструктору Date) равно 2015-11-01« * Нет, это экземпляр ** «Дата» **, содержащий эта дата. Нет смысла превращать это в строку, а затем передать эту строку в конструктор 'Date'. Просто используйте 'Date', который у вас уже есть. –
И если вы не используете Java 8, используйте Joda-Time. Избегайте использования «Календарь» и «Дата». – RealSkeptic