Date.after不适合我

时间:2016-06-27 08:22:00

标签: java android

我有一个字符串中的日期," 2016-6-26",我想与当前日期进行比较,如果我的日期等于或大于当前日期,我想做一些任务。 我已经实现了以下代码,但它总是给我有效的任何日期。

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();
    }
我在这里做错了什么? 有什么建议吗?

2 个答案:

答案 0 :(得分:1)

您的要求是:

  

如果我的日期等于或大于我想要的当前日期做某些任务

您的代码是:

Annuitätenrechner

然而,documentation for after州:

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

因此,如果当前日期(通过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. 获得)大于您的日期,则确实如此,这与您的要求完全相反。因此,您应该use before

答案 1 :(得分: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
        }