问题
这个问题在这里已有答案:
- Date对象到Calendar [Java] 7个答案
所以我从表单中的传入对象获取日期属性:
Tue May 24 05:05:16 EDT 2011
我正在编写一个简单的帮助方法将其转换为日历方法,我使用以下代码:
public static Calendar DateToCalendar(Date date )
{
Calendar cal = null;
try {
DateFormat formatter = new SimpleDateFormat("yyyyMMdd");
date = (Date)formatter.parse(date.toString());
cal=Calendar.getInstance();
cal.setTime(date);
}
catch (ParseException e)
{
System.out.println("Exception :"+e);
}
return cal;
}
要模拟传入的对象,我只是在当前使用的代码中分配值:
private Date m_lastActivityDate = new Date();
然而,一旦该方法到达,这将给我一个空指针:
date = (Date)formatter.parse(date.toString());
#1 热门回答(362 赞)
这是你的方法:
public static Calendar toCalendar(Date date){
Calendar cal = Calendar.getInstance();
cal.setTime(date);
return cal;
}
你正在做的其他事情都是错误的和不必要的。
顺便说一句,Java命名约定建议方法名称以小写字母开头,因此它应该是:dateToCalendar
ortoCalendar
(如图所示)。
好吧,让我们给你的代码加油,好吗?
DateFormat formatter = new SimpleDateFormat("yyyyMMdd");
date = (Date)formatter.parse(date.toString());
DateFormat
用于将字符串转换为日期(parse()
)或日期转换为字符串(format()
)。你正在使用它将Date的String表示形式解析回Date。这不可能是对的,可以吗?
#2 热门回答(11 赞)
只需使用Apache Commons
DateUtils.toCalendar(Date date)
#3 热门回答(-5 赞)
它很容易......将日期转换为日历,如下所示:
Calendar cal=Calendar.getInstance();
DateFormat format=new SimpleDateFormat("yyyy/mm/dd");
format.format(date);
cal=format.getCalendar();