2017-01-17 3 views
0
public static void main(String [] args){ 
    String date = "01/08/2017"; 

    Date todaydate = new Date(); 

    SimpleDateFormat myFormat = new SimpleDateFormat("dd/mm/yyyy"); 
    try { 
     Date expiry = myFormat.parse(date); 

     if(expiry.compareTo(todaydate) >0){ 
      System.out.println("false"); 
     } 

     else{ 
      System.out.println("true"); 
     } 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
} 

私は現在の日付と01/08/2017を比較しています。それはfalseを返します。しかし、isAfterifの条件で使用しても、それは真実に戻ります。Javaで動作しない日付の比較

+3

あなたの日付の形式が間違っている:それは0

チェックドキュメント返す等しい日付の場合。 'dd/mm/yyyy'の代わりに' dd/MM/yyyy'を使います。小文字の「mm」は、月数ではなく、**分**を意味します。 SimpleDateFormatの[API docs](http://docs.oracle.com/javase/8/docs/api/java/text/SimpleDateFormat.html)を参照してください。 – Jesper

答えて

3

これはトリック

SimpleDateFormat myFormat = new SimpleDateFormat("dd/MM/yyyy"); 
+0

はい。今それは働いている。 – Muzogeek

+0

@Muzogeekあなたの問題が解決された場合、答えを受け入れてください:-) –

1

引数がこの文字列に辞書順等しい文字列がある場合は、値0を行う必要があります。引数がこの文字列よりも辞書的に大きい文字列の場合は、0より小さい値。引数がこの文字列よりも辞書的に小さい文字列の場合は、0より大きい値このリンクに条件

if(expiry.compareTo(todaydate) <0) 

Go]を変更するn個compareTo()が日付の後で常にこと、trueを返しますされ、フォーマット以外の日付 https://www.tutorialspoint.com/java/util/date_compareto.htm

+0

日付を比較しているときに文字列の字句順序について話すのは多少混乱します... –