java.lang.IllegalArgumentException: 错误的类:class java.util.GregorianCalendar。

46

在使用 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。 - wvdz
啥?不太清楚你的情况。但是按照你说的做了之后,问题仍然没有解决。 - Huy Tower
1
同样的问题我想要问:P - Pratik Butani
是的,很多人需要它 :p - Huy Tower
2个回答

97

日历不能直接格式化,你需要从日历中获取日期,像这样:

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

实际上,像这样调用一个方法并不好,签名为:public final Date getTime()(我期望得到返回时间的日期方法 :))。 - xwild
@xwild 你是什么意思? - wvdz
3
我的意思是,日历方法命名不太好,getTime() 应该返回时间(例如12:00),getDate() 应该返回日期(例如2016-01-01),但目前在Java中 getTime() 返回的是一个 Date 实例。 - xwild
@wvdz 我是指SimpleDateFormat::format(Calendar)。它在我的Android应用上编译通过,但之后抛出了运行时异常。 - Peter Chaula
2
@peter。SimpleDateFormat 扩展了 Format,其中包含 format(Object) - wvdz
显示剩余2条评论

2
作为这里的一个答案:使用GregorianCalendar和SimpleDateFormat说“SimpleDateFormat(简单日期格式),顾名思义,用于格式化日期。”
因此,请尝试以下操作:
String formattedDate = dateFormat.format(someDate.getDate());

3
someDate.getTime()返回的是Date对象,而不是someDate.getDate() - Huy Tower

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接