2016-04-25 141 views
-5

我试图检查用户输入的日期是否在今天的日期之后。这里是我的代码:如何检查日期是否在今天之后java

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

日期是一个变量,用户日期格式为“2016/04/26”。在做了一些调试之后,我发现enteredDate和currentDate是空的。任何想法,为什么这是? 感谢

+4

currentDate不能为空。请创建一个[mcve]。 – assylias

+2

怎么会在'Date currentDate = new Date()'后变量'currentDate'为'null'? (提示:不能是......) – Seelenvirtuose

+0

在我的电脑上,日期为'“2016/04/26”',它工作正常。 – Hackerdarshi

回答

1

正如评论所说,这是不可能的Date对象将空引用。但是,如果sdf.parse(日期)抛出一个被抑制的异常,那么enteredDate可能为空。

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

的Java的日期类有之前和方法,你可以使用一个很好的例子后,这是

`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

该op已经知道 - 问题是关于空引用... – assylias

+0

我向他解释如何避免空引用,因为op没有在他的代码中指定日期值,他称为sdf.parse(日期); –

相关问题