2016-06-27 46 views
-5

我有一個日期字符串,「2016-6-26」,我想與當前日期進行比較,如果我的日期是等於或大於,那麼我想要做的當前日期做一些任務。 我已經實現了下面的代碼,但它總是給我有效的我選擇的任何日期。Date.after不工作對我

String[] parts = date.split("-"); //where date is 2016-6-26 
    String part1 = parts[0]; //2016 
    String part2 = parts[1]; //6 
    String part3 = parts[2]; //26 
    String valid_until =part3+"/"+part2+"/"+part1; //"26/06/2016";  // "28/02/2016"; 
    Log.d("soh_valid", valid_until); 
    SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); 

    Date strDate = null; 
    try { 
     strDate = sdf.parse(valid_until); 
    } catch (ParseException e) { 
     e.printStackTrace(); 
    } 
    if (new Date().after(strDate)) { 
     Log.d("new_date", String.valueOf(new Date())); 
    Toast.makeText(VASActivity.this,"valid",Toast.LENGTH_SHORT).show(); 
    }else{ 
     Toast.makeText(VASActivity.this,"Not valid",Toast.LENGTH_SHORT).show(); 
    } 

我在做什麼錯在這裏? 有什麼建議嗎?

+0

解析是否工作?因爲原始字符串中的「6」不會像您所期望的那樣奇蹟般地變成「06」。 – f1sh

+1

與你的問題沒有關係,但爲什麼不使用'new SimpleDateFormat(「yyyy-MM-dd」);'而不是分割和重新格式化? –

+0

@ f1sh我加月份0,但它不工作 –

回答

0

,你需要不拆「 - 」,然後用追加「/」

String d="2016-6-26"; 
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-M-dd"); 
     Date date1 = sdf.parse(d); 
     Date currentDate=new Date(); 
     if(date1.equals(currentDate) || date1.after(currentDate)) 
     { 
      //your logic here 
     } 
+0

月(''6'')不適用這種模式(''MM'')。 – f1sh

+0

@ f1sh我的不好,修正了。謝謝你讓我知道 – SpringLearner

+0

@ f1sh不正確:[它在這裏說](https://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html)「爲了解析,模式的數量除非需要分隔兩個相鄰的字段,否則將忽略字母。「 –

1

您的要求是:

如果我的日期是等於或大於我想要做的當前日期做一些任務

你的代碼是:

if (new Date().after(strDate)) { 
    // Do stuff since valid 
} 

然而,documentation for after狀態:

public boolean after(Date when) 
    Tests if this date is after the specified date. 
Returns: 
    true if and only if the instant represented by this Date object is 
    strictly later than the instant represented by when; false otherwise. 

所以,這是真的,如果當前日期(通過new Date GOT)比你的日期,你的要求正好相反越大。所以,你應該use before

+0

我之前使用的日期大於當前日期,但它不適用於當前日期。關於當前日期 –

+0

您可以說'if(!new Date()例如,.after(strDate))'或'if(new Date()。equals(strDate)|| new Date()。before(strDate))''。 –