java.lang.IllegalArgumentException:坏类:类 java.util.GregorianCalendar

Posted

技术标签:

【中文标题】java.lang.IllegalArgumentException:坏类:类 java.util.GregorianCalendar【英文标题】:java.lang.IllegalArgumentException: Bad class: class java.util.GregorianCalendar 【发布时间】:2014-07-25 08:15:24 【问题描述】:

我在使用 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());

【问题讨论】:

如果使用 eclipse:删除你的导入,然后按 ctrl+Shift+O 嗯?不清楚你的情况。但是按照你说的做之后。仍然无法修复问题 我想问的一样:P 是的,很多人需要它:p 【参考方案1】:

日历不能直接格式化,需要从日历中获取日期,如下:

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

【讨论】:

其实这样调用方法不太好,签名:public final Date getTime()(我希望get date方法会返回时间:) @xwild 你什么意思? 我的意思是日历方法命名不太好,getTime应该返回Time(即12:00),getDate应该返回Date(即2016-01-01),但现在在java中getTime()返回Date 实例。 Calendar 不是Date 的子类。为什么会在 android 上编译? @peter。 SimpleDateFormat 扩展了 Format 具有 format(Object)【参考方案2】:

作为这里的答案之一:Using GregorianCalendar with SimpleDateFormat 说“A SimpleDateFormat,顾名思义,格式化日期。”

那么,试试这个:

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

【讨论】:

someDate.getTime() 将返回 Date,而不是 someDate.getDate()

以上是关于java.lang.IllegalArgumentException:坏类:类 java.util.GregorianCalendar的主要内容,如果未能解决你的问题,请参考以下文章

IllegalArgumentException:此 NavController 未知导航目的地 xxx