Konwersja obiektu daty do obiektu kalendarza [duplikat]

To pytanie ma już odpowiedź tutaj:

Więc otrzymuję atrybut date z przychodzącego obiektu w postaci:

Tue May 24 05:05:16 EDT 2011

Piszę prostą metodę pomocniczą, aby przekonwertować ją na metodę kalendarza, używałem następującego kodu:

    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;
 }

Aby zasymulować nadchodzący obiekt jestem po prostu przypisanie wartości w kodzie aktualnie używanym:

private Date m_lastActivityDate = new Date();

Jednak to daje mi wskaźnik null, gdy metoda osiągnie:

date = (Date)formatter.parse(date.toString()); 
Author: Will, 2011-05-31

4 answers

Oto Twoja metoda:

public static Calendar toCalendar(Date date){ 
  Calendar cal = Calendar.getInstance();
  cal.setTime(date);
  return cal;
}
Wszystko inne, co robisz, jest zarówno złe, jak i niepotrzebne.

BTW, konwencje nazewnictwa Javy sugerują, że nazwy metod zaczynają się od małej litery, więc powinno to być: dateToCalendar lub toCalendar (Jak pokazano).


Ok, wydojmy Twój kod, dobrze?
DateFormat formatter = new SimpleDateFormat("yyyyMMdd");
date = (Date)formatter.parse(date.toString()); 

DateFormat jest używany do konwersji łańcuchów na Daty (parse()) lub daty Na Łańcuchy (format()). Używasz go do analizy reprezentacji łańcuchowej daty z powrotem do daty. To nie może być prawda., może?

 372
Author: Sean Patrick Floyd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-31 21:27:56

Wystarczy użyć Apache Commons

DateUtils.toCalendar (data data)

 13
Author: David Trujillo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-27 14:34:19

To takie proste...konwertowanie daty do kalendarza w ten sposób:

Calendar cal=Calendar.getInstance();
DateFormat format=new SimpleDateFormat("yyyy/mm/dd");
format.format(date);
cal=format.getCalendar();
 -5
Author: jsina,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-26 17:42:14

Ta funkcja zwróci obiekt sql date z obiektu java date.

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

    java.sql.Date d1= new java.sql.Date(d.getTime());
    return d1;
}
 -7
Author: chetan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-02-05 20:49:40