2017-06-16 3 views
-1

ich den Code unten lief und bekam zwiespältiges Ergebnis:Simple gibt falsche Datum

import java.text.SimpleDateFormat; 
    import java.util.Date; 
    import java.text.DateFormat; 
    import java.text.ParseException; 

    public class Test 
    { 
     public static void main(String[] args) 
     { 
      DateFormat format = new SimpleDateFormat("yyyyMMdd"); 
      DateFormat secFormat = new SimpleDateFormat("ddMMYYYY"); 
      String date = "20171231"; 
      try { 
         Date newDate = format.parse(date); 
         System.out.println("Normal: "+newDate);   
         System.out.println("Actual: 
         "+secFormat.format(newDate)); 
       } catch (ParseException ex) { 
      System.out.println("Exception"); 
      }   
     } 
     } 

Das obige Ergebnis bekam ich als unten: Normal: Sun 31. Dezember 00.00.00 UTC 2017 Aktuell: 31.122.018

31122018 wird zurückgegeben, wenn der Wert 31122017 ist. Kann mir jemand helfen, das korrekte Ergebnis als eine Anforderung in meinem Projekt zu bekommen.

+1

'YYYY' ist nicht das gleiche wie' yyyy'. Siehe [Umwandlung von Java-Zeichenfolgen in Datum] (https://stackoverflow.com/q/4216745/5221149). – Andreas

+0

mit ddMMyyyy hat auch 31122018 anstelle von 31122017, aber als ich versuchte mit ddMMyyy konnte ich 31122017 bekommen. Danke für Ihre Hilfe :) –

Antwort

0

Versuchen Sie folgendes:

SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd"); 
    SimpleDateFormat secFormat = new SimpleDateFormat("ddMMyyyy"); 
    String date = "20171231"; 
    try { 
     Date newDate = format.parse(date); 
     System.out.println("Normal: "+newDate);   
     System.out.println("Actual: " +secFormat.format(newDate)); 
    } catch (Exception ex) { 
     System.out.println("Exception"); 
    }