it-swarm.com.de

Konvertieren eines Date-Objekts in ein Kalenderobjekt

So erhalte ich ein Datumsattribut von einem eingehenden Objekt in der Form:

Tue May 24 05:05:16 EDT 2011

Ich schreibe eine einfache Hilfsmethode, um sie in eine Kalendermethode zu konvertieren. Dabei habe ich den folgenden Code verwendet:

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

Um das eingehende Objekt zu simulieren, weise ich nur die Werte innerhalb des Codes zu, der derzeit verwendet wird:

private Date m_lastActivityDate = new Date();

Dies gibt mir jedoch einen Nullzeiger, sobald die Methode erreicht:

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

Hier ist Ihre Methode:

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

Alles andere, was Sie tun, ist falsch und unnötig.

Übrigens, Java Namenskonventionen legen nahe, dass Methodennamen mit einem Kleinbuchstaben beginnen. Es sollte also sein: dateToCalendar oder toCalendar (wie gezeigt).


OK, lass uns deinen Code melken, sollen wir?

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

DateFormat wird verwendet, um Zeichenfolgen in Datumsangaben (parse()) oder Datumsangaben in Zeichenfolgen (format()) zu konvertieren. Sie verwenden es, um die Zeichenfolgendarstellung eines Datums zurück auf ein Datum zu analysieren. Das kann doch nicht richtig sein, oder?

420

Verwenden Sie einfach Apache Commons

DateUtils.toCalendar (Date date)

18
David Trujillo