java.lang.IllegalArgumentException: плохой класс: класс java.util.GregorianCalendar

Я получил это исключение при использовании GregorianCalendar

java.lang.IllegalArgumentException: Bad class: class java.util.GregorianCalendar

Кто знает, как исправить,

Пожалуйста помогите.

p/s: я использовал следующий код:

Calendar someDate = GregorianCalendar.getInstance();
        someDate.add(Calendar.DAY_OF_YEAR, -7);
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String formattedDate = dateFormat.format(someDate);

ОБНОВЛЕНО Я должен использовать эту строку для достижения даты и времени:

String formattedDate = dateFormat.format(someDate.getTime());


person Huy Tower    schedule 04.06.2014    source источник
comment
Если вы используете eclipse: удалите импорт, затем нажмите ctrl+Shift+O.   -  person wvdz    schedule 04.06.2014
comment
Хм? не совсем понимаю ваш случай. Но после того, как сделаешь, как ты сказал. до сих пор не могу исправить проблему   -  person Huy Tower    schedule 04.06.2014
comment
То же самое, что я хочу спросить: P   -  person Pratik Butani    schedule 14.09.2015
comment
Да, многим это нужно :p   -  person Huy Tower    schedule 19.07.2016


Ответы (2)


Календарь нельзя отформатировать напрямую, вам нужно получить дату из календаря, например:

String formattedDate = dateFormat.format(someDate.getTime());
person wvdz    schedule 04.06.2014
comment
На самом деле не очень хорошо вызывать такой метод, подпись: public final Date getTime() (я ожидаю получить метод даты, который будет возвращать время :) - person xwild; 24.03.2016
comment
@xwild Что ты имеешь в виду? - person wvdz; 24.03.2016
comment
Я имею в виду, что имена методов календаря не так хороши, getTime должен возвращать время (т.е. 12:00), getDate должен возвращать дату (т.е. 2016-01-01), но теперь в java getTime() возвращает экземпляр Date. - person xwild; 25.03.2016
comment
Calendar не является подклассом Date. Почему это компилируется на Android? - person peterchaula; 20.02.2017
comment
@peter: Calendar.getTime() извлекает Calendar как Date. - person wvdz; 20.02.2017
comment
@wvdz Я имею в виду SimpleDateFormat::format(Calendar). Он скомпилирован в моем приложении для Android, но затем выдал исключение во время выполнения. - person peterchaula; 20.02.2017
comment
@Питер. SimpleDateFormat расширяет Format, у которого есть format(Object). - person wvdz; 20.02.2017

В качестве одного из ответов здесь: Использование GregorianCalendar с SimpleDateFormat говорит: "SimpleDateFormat, как видно из его названия , форматирует даты."

Итак, попробуйте следующее:

String formattedDate = dateFormat.format(someDate.getDate());
person Zoran    schedule 04.06.2014
comment
someDate.getTime() будет возвращено Date, а не someDate.getDate() - person Huy Tower; 02.07.2014