2016-12-14 5 views
0

Es gab viele Beiträge, die dieses Thema behandelt, aber aber ich sie an meinen Code anpassen Ich konnte keine passende Antwort finden.Datum Format wird verloren

try (BufferedReader br = new BufferedReader(new FileReader(path));) 
{   
     String line = ""; 

     Person tempPerson = null; 
     String dateFormat = "dd-MM-yyyy"; 
     SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); 
     Date tempBirthdayDate = null; 

     while ((line = br.readLine()) != null) 
     {    
      String[] splitFormat = line.split("/"); 
      for (String s : splitFormat) 
      { 
       String[] datamember = s.split(", "); 

       //Some more stuff... 

       tempBirthdayDate = sdf.parse(datamember[3]); 
       sdf.format(tempBirthdayDate); 
       sdf.applyPattern(dateFormat); 

       //Some more stuff... 

      } 

      tempPerson = new Person(...,...,...,tempBirthdayDate,...,...); 
     } 
} 

Person.java Copy-Konstruktor:

public Person(..., ..., ..., Date birthdayDate, ..., ...) 
{ 
    this.xxx = ...; 
    this.xxx = ...; 
    this.xxx = ...; 
    this.birthdayDate = birthdayDate; 
    this.xxx = adresse; 
    this.xxx = ...; 
} 

Die "..." sind nur Halter platzieren Sie den Code zu verkürzen. In der Quelldatei (.txt) ist das Datum im selben Format, das ich oben definiert habe. Aber sobald ich die toString() - Methode auf dem birthdayDate anrufe, erhalte ich folgendes Ergebnis für z.B. 26.05.1993: Mi 26. Mai 00:00:00 CEST 1993. Vielen Dank für Ihre Hilfe!

+0

Sie vergessen zu erwähnen, was ist Ihre gewünschte Ausgabe? – user3437460

+0

Die Zeichenfolge, nach der Sie suchen, wird von 'sdf.format (tempBirthdayDate)' zurückgegeben. Und 'sdf.applyPattern (dateFormat)' ist redundant. – shmosel

+0

was würden Sie sonst erwarten? Lesen Sie das Dokument für die von Ihnen verwendeten Methoden – njzk2

Antwort

0

Die toString-Methode eines Date-Objekts ist nicht von SimpleDateFormat betroffen, das Sie initialisiert haben.

Sie benötigen eine benutzerdefinierte Klasse erweitern Datum zu schaffen und die toString Methode überschreiben

public class CustomDate extends Date { 
     ...... 
     @Override 
     public String toString(){ 
      return new SimpleDateFormat("dd-MM-yyyy").format(this); 
     } 
} 

In Person Konstruktor

public Person(..., ..., ..., CustomDate birthdayDate, ..., ...) 
{ 
    this.xxx = ...; 
    this.xxx = ...; 
    this.xxx = ...; 
    this.birthdayDate = birthdayDate; 
    this.xxx = adresse; 
    this.xxx = ...; 
} 

Sie können nun toString auf birthdayDate anrufen und das Format erhalten Sie