将date对象转换为日历对象

所以我从表单中得到一个传入对象的date属性:

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

这是你的方法:

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

你所做的一切都是错误的和不必要的。

顺便说一句,Java命名约定表明,方法名称以小写字母开头,所以它应该是: dateToCalendartoCalendar (如图所示)。


好的,让我们把你的代码打个牛奶吧?

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

DateFormat用于将string转换为date( parse() )或date转换为string( format() )。 您正在使用它将date的string表示法parsing回date。 这不可能是正确的,可以吗?

只需使用Apache Commons

DateUtils.toCalendar(datedate)

这很容易…将date转换为日历如下所示:

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

这个函数将从javadate对象中返回sqldate对象。

  public java.sql.Date convertJavaDateToSQL(Date d) { java.sql.Date d1= new java.sql.Date(d.getTime()); return d1; }