2016-04-21 4 views
0

Ich muss meine Eingabedatenfolge formatieren.Datumsformatkonvertierung, die zusätzliches Jahr hinzufügt

Eingangsdatum string: 28-01-1983(dd-MM-yyyy)

Erwartet Datum string: 1983-01-28 (yyyy-MM-dd)

Ich habe unten Programm verwendet. Aber ich bekomme keine korrekte Ausgabe.

public static String formateDate(String oldFormat, String newFormat, String date) { 
     final String OLD_FORMAT = oldFormat; 
     final String NEW_FORMAT = newFormat; 

     String oldDateString = date; 
     String newDateString = null; 

     try { 
      SimpleDateFormat sdf = new SimpleDateFormat(OLD_FORMAT); 
      Date d = sdf.parse(oldDateString); 
      sdf.applyPattern(NEW_FORMAT); 
      newDateString = sdf.format(d); 
     } 
     catch (ParseException e) { 
      e.printStackTrace(); 
     } 

     return newDateString; 
} 

Aufruf der Methode:

public static void main(String[] args) { 
     String formatDob = formateDate("MM-dd-yyyy", "yyyy-dd-MM", "28-01-1983"); 
     System.out.println("Formated DOB:"+formatDob); 

}

Gerade jetzt ich bin immer Ausgang: Formated DOB:1985-01-04

Warum meinen Code produzieren falsch ausgegeben? Ich bin mit JDK 1.7

+0

Das alte Format sollte 'TT-MM-JJJJ' lauten. Es gibt keinen Monat 28 –

Antwort

3

Sie übergeben Monat als 28 in Ihrem alten Format, das (12 + 12 + 4) bedeutet April Monat des kommenden dritten Jahres bedeutet.

So, Ihr altes Format (MM-dd-yyyy) wird als Datum (1983 + 2 years) = 1985 und 4 th Monate des dritten Jahres analysieren, die April ist, so dass Sie Datum haben 1st April 1985. Ihr altes Datumsformat sollte dd-MM-yyyy sein.

0

Betrachten Sie den ersten Teil der Umwandlung

Sie haben Format MM-dd-yyyy und Sie haben die Datumszeichenfolge von 28-01-1983

Da es keinen Monat 28 Ich schlage vor, dass das Format sollte sein dd-MM-yyyy

0

ändern

formateDate("MM-dd-yyyy", "yyyy-dd-MM", "28-01-1983"); 

zu

formateDate("MM-dd-yyyy", "yyyy-dd-MM", "01-28-1983"); 

Sie waren Datum in Ort Monat übergeben.

Verwandte Themen