将Date对象转换为日历对象

时间:2011-05-31 10:05:18

标签: java date calendar nullpointerexception

所以我从表单中的传入对象中获取了一个日期属性:

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()); 

3 个答案:

答案 0 :(得分:412)

这是你的方法:

public static Calendar toCalendar(Date date){ 
  Calendar cal = Calendar.getInstance();
  cal.setTime(date);
  return cal;
}

你正在做的其他事情都是错误的和不必要的。

BTW,Java命名约定建议方法名称以小写字母开头,因此它应该是:dateToCalendartoCalendar(如图所示)。


好的,让我们给你的代码加油,不管吗?

DateFormat formatter = new SimpleDateFormat("yyyyMMdd");
date = (Date)formatter.parse(date.toString()); 

DateFormat用于将字符串转换为日期(parse())或日期转换为字符串(format())。您正在使用它将Date的String表示形式解析回Date。这可能不对,可以吗?

答案 1 :(得分:17)

只需使用Apache Commons

DateUtils.toCalendar(Date date)

答案 2 :(得分:-6)

这很容易......将日期转换为日历,如下所示:

Calendar cal=Calendar.getInstance();
DateFormat format=new SimpleDateFormat("yyyy/mm/dd");
format.format(date);
cal=format.getCalendar();