web-dev-qa-db-ja.com

日付オブジェトをカレンダーオブジェクトに変換する

それで私は次の形式で入ってくるオブジェクトから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();

しかし、メソッドが到達すると、これは私にnullポインタになります。

date = (Date)formatter.parse(date.toString()); 
174
Will

これがあなたの方法です:

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

あなたがしている他のすべては間違っていると不要の両方です。

ところで、Javaの命名規則では、メソッド名は小文字で始めることを推奨しているので、dateToCalendarまたはtoCalendarにする必要があります(図のとおり)。


それでは、あなたのコードをミルクしましょう。

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

DateFormatは、文字列から日付への変換(parse())または日付から文字列への変換(format())に使用されます。あなたはそれを使ってDateのString表現をDateに戻します。これは正しくないはずですよね?

415

Apache Commonsを使うだけ

DateUtils.toCalendar(日付日付)

18
David Trujillo