Android 比较日期不起作用

Android 比较日期不起作用,android,date,Android,Date,我已经做了这个功能,比较3个日期,但它不工作,我不知道为什么data=2013-02-10和data2=2013-02-14,datateste是系统的日期。它应该显示一个错误警报,但它没有 void restricoes() { Button btnCreateProduct = (Button) findViewById(R.id.button2); try { SimpleDateFormat sdf = new SimpleDateFormat("yyyy/m

我已经做了这个功能,比较3个日期,但它不工作,我不知道为什么
data=2013-02-10
data2=2013-02-14
datateste
是系统的日期。它应该显示一个错误警报,但它没有

 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方法中,它就可以工作了

试一试{

但如果更改数据不符合if条件,则会发出错误警报
不会消失您的日期格式使用此模式
“yyyy/mm/dd”
。但是,
mm
代表分钟。如果您需要月份,则需要将其大写为
“yyyy/mm/dd”
。请参阅文档

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

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

数据、
data2
datateste
的值是什么?看看你的问题,你的日期逻辑似乎不正确。data 2012-02-10 data2 2012-02-12 datateste 2014-06-11是的,应该是| |而不是&&但我认为它不起作用让我看看它不起作用work i更改为&&to | |,并且不显示错误警报您是否输入破折号或斜线作为分隔符?这会关闭程序。请链接Logcat的堆栈跟踪?06-14 11:10:32.599:E/AndroidRuntime(4551):致命异常:main 06-14 11:10:32.599:E/AndroidRuntime(4551):java.lang.RuntimeException:无法实例化应用程序android.app.application:java.lang.NullPointerException 06-14 11:10:32.599:E/AndroidRuntime(4551):在android.app.LoadedAppk.makeApplication(LoadedAppk.java:504)06-14 11:10:32.599:E/AndroidRuntime(4551):在android.app.ActivityThread.handleBindApplication(ActivityThread.java:4364)在堆栈跟踪的其余部分(这里限制为600个字符…)的某个地方应该是代码的调用/指令。您能指出哪一个(堆栈跟踪中的第一个)会导致您发现问题:)06-14 11:10:32.599:E/AndroidRuntime(4551):在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)06-14 11:10:32.599:E/AndroidRuntime(4551):在dalvik.system.NativeStart.main(本机方法)06-14 11:10:32.599:E/AndroidRuntime(4551):由以下原因引起:java.lang.NullPointerException 06-14 11:10:32.599:E/AndroidRuntime(4551):在android.app.LoadedApk.InitializejaContextClassLoader(LoadedApk.java:379)
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();
  }