比较日期不起作用

时间:2014-06-14 10:26:18

标签: android date

我已经制作了这个比较3个日期的功能,但它不起作用,我无法弄清楚原因。 data = 2013-02-10data2= 2013-02-14datateste是系统的日期。它应该出现错误警报,但它不会

 void restricoes()  {
 Button btnCreateProduct = (Button) findViewById(R.id.button2);

     try {
     SimpleDateFormat sdf = new SimpleDateFormat("yyyy/mm/dd");

     java.util.Date strDate1 = sdf.parse(data);
     java.util.Date strDate2 = sdf.parse(data2);
     java.util.Date strDate = sdf.parse(datateste);




     if (strDate.before(strDate1) && strDate.after(strDate2)) {
            Toast.makeText(getApplicationContext(), "chupa boi",
                       Toast.LENGTH_LONG).show();
            Toast.makeText(getApplicationContext(), data,
                       Toast.LENGTH_LONG).show();
            Toast.makeText(getApplicationContext(), data2,
                       Toast.LENGTH_LONG).show();
            Toast.makeText(getApplicationContext(), datateste,
                       Toast.LENGTH_LONG).show();
            inputdata.setError("yipikaei");


     }
    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }


if(checkEditText(inputdtestab) || checkEditText(quantidade))
{
    inputdtestab.setError("yipikaei");
    quantidade.setError("mudfukkerrr");
    btnCreateProduct.setVisibility(View.INVISIBLE);

}
else{

     // ==========================================
     // make button visible.
     // use the method "setVisibility", not "setViewVisibility"
     // and "VISIBLE" in "View.VISIBLE" is in full cap:
     btnCreateProduct.setVisibility(View.VISIBLE);
    }
}

所以现在代替这个我把代码直接放在oncreate方法中并且它可以工作

尝试{

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
java.util.Date date1 = sdf.parse(datateste);
java.util.Date date2 = sdf.parse(data);

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

if(date1.compareTo(date2)>0){
    inputdata.setError("asa");
}else{
    System.out.println("How to get here?");
}

  }catch(ParseException ex){
ex.printStackTrace();
  }

但是如果将数据更改为不遵守if条件则会出现错误警报 不会消失

2 个答案:

答案 0 :(得分:1)

您的日期格式使用此模式"yyyy/mm/dd"。但是,mm代表分钟。如果您需要几个月,则需要将其大写为"yyyy/MM/dd"。请参阅文档here

此外,您正在检查2014/06/11是否在2013/2/10之前和2013/2/14之后。显然情况永远不会如此。

答案 1 :(得分:0)

正如您所说,data = "2013-02-10",但您似乎正在使用模式"yyyy/MM/dd"进行解析。 尝试使用"yyyy-MM-dd"或更改输入数据。