Преобразование объекта 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()); 

Ответ 1

Здесь ваш метод:

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

Все остальное, что вы делаете, является неправильным и ненужным.

BTW, соглашения о присвоении имен Java предполагают, что имена методов начинаются с строчной буквы, поэтому это должно быть: dateToCalendar или toCalendar (как показано).


Хорошо, дайте молоко ваш код, не так ли?

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

DateFormat используется для преобразования строк в числа (parse()) или Dates to Strings (format()). Вы используете его для синтаксического анализа строкового представления даты на дату. Это может быть неправильно, не так ли?

Ответ 3

это так просто... преобразование даты в календарь следующим образом:

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

Ответ 4

Эта функция вернет объект даты sql из объекта даты java.

 public java.sql.Date convertJavaDateToSQL(Date d)
{

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