2016-04-25 5 views
-5

Ich versuche zu überprüfen, ob ein vom Benutzer eingegebenes Datum nach dem heutigen Datum liegt. Hier ist mein Code:Wie überprüft man, ob ein Datum nach heute ist? Java

SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); 
Date enteredDate = sdf.parse(date); 
Date currentDate = new Date(); 
if(enteredDate.after(currentDate)){ 

Datum ist eine Variable mit dem Benutzer Datum im Format "2016/04/26". Nachdem ich einige Debugging durchgeführt habe, habe ich festgestellt, dass inputDate und currentDate null sind. Irgendwelche Ideen, warum das ist? Dank

+4

currentDate darf nicht null sein. Bitte erstellen Sie ein [mcve]. – assylias

+2

Wie könnte es sein, dass nach 'Date currentDate = new Date()' die Variable 'currentDate'' null' ist? (Hinweis: Es kann nicht sein ...) – Seelenvirtuose

+0

Auf meinem Computer, mit Datum als "2016/04/26", es funktioniert gut. – Hackerdarshi

Antwort

1

Wie in den Kommentaren erwähnt, ist es nicht möglich ist, dass Date-Objekt Null-Referenz haben. Wenn jedoch sdf.parse (date) eine Ausnahme auslöst, die unterdrückt wird, kann instateDate null sein.

String date="2016/04/26"; 
    Date enteredDate=null; 
    try 
    { 
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); 
    enteredDate = sdf.parse(date); 
    }catch (Exception ex) 
    { 
     // enteredDate will be null if date="287686"; 
    } 
    Date currentDate = new Date();  
    if(enteredDate.after(currentDate)){ 
     System.out.println("after "); 
    }else 
     System.out.println("before"); 
-2
public class App { 
    public static void main(String[] args) { 
     String date = "2016/04/26"; 
     Date enteredDate = null; 
     Date matcher = null; 
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd"); 
     try { 
      enteredDate = sdf.parse(date); 
     } catch (Exception ex) { 
      ex.printStackTrace();// enteredDate will be null if date="287686"; 
     } 

     try { 
      matcher = sdf.parse("2016/04/26"); 
     } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      // e.printStackTrace(); 
     } 

     if (enteredDate.compareTo(matcher) == 0) { 
      System.out.println("enteredDate will be null"); 
     } 

     Date currentDate = new Date(); 
     if (enteredDate.after(currentDate)) { 
      System.out.println("after "); 
     } else 
      System.out.println("before"); 
    } 
} 
-2

Die Java-Datum Klasse vor und nach der Methode, die Sie ein gutes Beispiel verwenden können, ist dies

`import java.text.SimpleDateFormat; 
import java.util.Date; 
import java.text.ParseException; 
public class App 
{ 
    public static void main(String[] args) 
    { 
    try{ 

     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
     Date date1 = sdf.parse("2009-12-31"); 
     Date date2 = sdf.parse("2010-01-31"); 

     System.out.println(sdf.format(date1)); 
     System.out.println(sdf.format(date2)); 

     if(date1.compareTo(date2)>0){ 
      System.out.println("Date1 is after Date2"); 
     }else if(date1.compareTo(date2)<0){ 
      System.out.println("Date1 is before Date2"); 
     }else if(date1.compareTo(date2)==0){ 
      System.out.println("Date1 is equal to Date2"); 
     }else{ 
      System.out.println("How to get here?"); 
     } 

    }catch(ParseException ex){ 
     ex.printStackTrace(); 
    } 
} 
}` 
+0

Das op weiß bereits, dass - die Frage ist über Null-Referenzen ... – assylias

+0

Ich erklärte ihm, wie man die Null-Referenz zu vermeiden, weil der Op nicht den Datumswert in seinem Code angegeben, wo er sdf.parse (Datum); –