2012-09-12 51 views
3

我遇到了我的应用程序问题。我正在尝试做一些事情来阻止用户选择已经过去的日期和时间。如果用户选择日期和过去的时间,则会显示错误消息。用户将从datePicker和timePicker中选择日期和时间。任何人有任何想法做到这一点?任何帮助将不胜感激。非常感谢!如何防止用户设置当前日期和时间之前的日期和时间

回答

1

如果你设定的EditText捡拾值,你可以这样做:

Calendar cal = Calendar.getInstance(); 
           cal.set(cal.get(Calendar.YEAR), 
             cal.get(Calendar.MONTH), 
             cal.get(Calendar.DAY_OF_MONTH)); 
           DateFormat df = new SimpleDateFormat(
             "dd/MM/yyyy"); 
           Date day_entered, day_valid; 

           day_entered = df.parse(your_date_edittext.getText() 
             .toString()); 
           day_valid = df.parse(df.format(cal.getTime())); 
           if (day_entered.after(day_valid)) { 
            Toast msg = Toast 
              .makeText(
                Profile.this, 
                "Please Enter a valid date", 
                Toast.LENGTH_LONG); 
            msg.show(); 
            } 
+0

嗨,哎你怎么通过设置的EditText机械臂值的意思来定义广播reciever?我直接从拾取器中设置值。 – CallMyName

+0

你是否设置了从picker获取的值,如edittext,textview或其他东西? –

+0

哦,是的,我将采样器的值传递给textview。 – CallMyName

2

您可以防止用户通过广播reciever ACTION_TIME_CHANGED更改日期时间。如果用户改变日期时间,则广播接收者将被呼叫。覆盖广播接收器中的onRecieve方法。请确保清单文件

@Override 
    public void onReceive(Context context, Intent intent) { 

    // You can put conditions the changed date time is not past from the current time and show toast message. 

    } 
+0

我真的需要类似这样的东西......我在想它是否有效 –

+0

您是否尝试过?如果你尝试过,那么它肯定会起作用 –

+0

是的,它像一个魅力。很优雅的解决方案 –

0
if(fromdate!=null && fromdate.length()>0 && todate!=null && todate.length()>0) 
    { 
    try 
     { 
     sdf = new SimpleDateFormat("yyyy-mm-dd"); 
       date1 = sdf.parse(fromdate); 
       date2 = sdf.parse(todate); 

      Calendar cal = Calendar.getInstance(); 
      Calendar cal2 = Calendar.getInstance(); 


      cal.setTime(date1); 
       cal2.setTime(date2); 


        if(cal.after(cal2)){ 
       System.out.println("Date1 is after Date2"); 
       // Toast.makeText(getApplicationContext(), "from Date1 is after Date2", Toast.LENGTH_SHORT).show(); 
       // clear the dates here........ 
        } 


     } 
     catch(Exception e) 
     { 
     Log.d("pavan","in exception block "); 
     } 

}

相关问题