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的主要内容,如果未能解决你的问题,请参考以下文章