2009-04-14 11 views
3

Ich kann nicht scheinen, das Problem mit dem Beispielcode unten zu sehen. Aus irgendeinem Grund scheint das Jahr zu ignorieren und zu sagen, die Daten sind die gleichen, wie in der Ausgabe unten gesehen werden kann. Ich muss etwas Einfaches vermissen.Java-String zu Datetime-Konvertierungsproblem

01/28/2006
01/16/2007
Di 1. April 00.00.00 PDT 2008
Di 1. April 00.00.00 PDT 2008
getan

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

    class ExampleProgram { 
     public static void main(String[] args){ 
     DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); 
     String d1String = "01/28/2006"; 
     String d2String = "01/16/2007"; 
     System.out.println(d1String); 
     System.out.println(d2String); 
     Date d1=null; 
     try { 
      d1 = df.parse(d1String); 
     } catch (ParseException e) {     
      System.out.println(e.getMessage()); 
     }   
     Date d2=null; 
     try { 
      d2 = df.parse(d2String); 
     } catch (ParseException e) {     
      System.out.println(e.getMessage()); 
     } 
     System.out.println(d1); 
     System.out.println(d2); 
     System.out.println("done"); 
     } 
    } 
+0

Ein Aprilscherz Witz? Es scheint nur sehr erfunden, dass die Daten BEIDE entsprechen dem 1. April. + 1 Jahr, -12 Monate = = dasselbe Datum. Wenn Ihr Dateformat-Objekt strict (df.setLenient (false)) ist, würde es den Fehler für Sie auslösen. – evnafets

Antwort

6
"dd/MM/yyyy" 

sollte lauten:

"MM/dd/yyyy" 
+0

Wie habe ich das vermisst .... danke !! –

0

Sie könnten versuchen, Ihre Daten als Date Objekte zu deklarieren.

+1

Er tat es. Der Konstruktor Date (String) ist veraltet. Er verwendet den richtigen Weg, um einen String in ein Date zu verwandeln. –

1

Der Grund, dass es nicht Sie wurde zu geben, was Sie erwartet, ist wie Peter sagte der SimpleDateFormat"MM/dd/yyyy"

Der Grund sollte lesen, dass das Ergebnis sagt, dass sie gleich zu sein scheinen, weil mit dem Format, das Sie haben gegeben es "dd/MM/yyyy", d1String 's Monat ist 28. Es dauert 28 - 12, ein Jahr hinzufügen, 16 - 12, ein weiteres Jahr hinzufügen, und das Ergebnis ist 4 (April) und das Jahr ist jetzt 2008. Das gleiche für d2String.

Verwandte Themen