Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 日期选择器对话框不能选择过去日期_Java_Android_Android Layout_Datepicker - Fatal编程技术网

Java 日期选择器对话框不能选择过去日期

Java 日期选择器对话框不能选择过去日期,java,android,android-layout,datepicker,Java,Android,Android Layout,Datepicker,我正在我的应用程序中使用datepicker对话框。当用户从对话框中选择任何日期时,我不想选择通过的日期。我的密码在这里 private DatePickerDialog.OnDateSetListener mdateSetListener = new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int yr, int monthOfYear,

我正在我的应用程序中使用datepicker对话框。当用户从对话框中选择任何日期时,我不想选择通过的日期。我的密码在这里

private DatePickerDialog.OnDateSetListener mdateSetListener = new DatePickerDialog.OnDateSetListener() {

    @Override
    public void onDateSet(DatePicker view, int yr, int monthOfYear,
            int dayOfMonth) {
        year = yr;
        month = monthOfYear;
        day = dayOfMonth;
        updateDate();
    }
};
更新日期将所选日期设置为EditText。是否有任何库方法阻止选择过去的日期


提前感谢

在更新方法中,您的条件是。日期类有before、equals和after方法。请使用它们

if(userdate.before(today) || userdate.equals(today)){
   //past date found
}

在更新方法中,条件是.Date类有before、equals和after方法。使用它们

if(userdate.before(today) || userdate.equals(today)){
   //past date found
}

您可以使用:
getDatePicker().setMaxDate()
。覆盖对话框的onCreate(),并在那里应用限制。

您可以使用:
getDatePicker().setMaxDate()
。重写对话框的onCreate(),并在那里应用限制。

如果使用API 11或更高版本,可以使用
日期选择器.setMinDate()

查看更多信息


另请参阅了解如何使用它。

如果使用API 11或更高版本,则可以使用
DatePicker.setMinDate()

查看更多信息


另请参阅了解如何使用它。

如果您的应用程序需要在API LEVEL 8+上运行,请使用下面的方法。将相关代码放入yout
onDateSet
方法中

@Override
    public void onDateSet(DatePicker view, int year, int monthOfYear,
            int dayOfMonth) {
String selected_date = dayOf + "-" + monthOf + "-" + year;

            Log.i(TAG, "Selected Date" + selected_date);
            SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
            Date strDate = null;
            try {
                strDate = sdf.parse(selected_date);
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            Calendar c = Calendar.getInstance();
            System.out.println("Current time => " + c.getTime());

            Date current_date = null;
            String formattedDate = sdf.format(c.getTime());
            try {
                current_date = sdf.parse(formattedDate);
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }


            if (current_date.after(strDate)) {
                Toast.makeText(getApplicationContext(),
                        "Please choose future date", 1).show();
            } else {

                mYear = String.valueOf(year);
                mMonth = String.valueOf(monthOfYear);
                mDay = String.valueOf(dayOfMonth);
                updateStartDate();

            }
       }

如果您的应用程序需要在API级别11+上运行,请使用
DatePicker.setMinDate(long)
您可以找到更多信息如果您的应用程序需要在API级别8+上运行,请使用下面的方法。将相关代码放入yout
onDateSet
方法中

@Override
    public void onDateSet(DatePicker view, int year, int monthOfYear,
            int dayOfMonth) {
String selected_date = dayOf + "-" + monthOf + "-" + year;

            Log.i(TAG, "Selected Date" + selected_date);
            SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy");
            Date strDate = null;
            try {
                strDate = sdf.parse(selected_date);
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            Calendar c = Calendar.getInstance();
            System.out.println("Current time => " + c.getTime());

            Date current_date = null;
            String formattedDate = sdf.format(c.getTime());
            try {
                current_date = sdf.parse(formattedDate);
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }


            if (current_date.after(strDate)) {
                Toast.makeText(getApplicationContext(),
                        "Please choose future date", 1).show();
            } else {

                mYear = String.valueOf(year);
                mMonth = String.valueOf(monthOfYear);
                mDay = String.valueOf(dayOfMonth);
                updateStartDate();

            }
       }

如果您的应用程序需要在API LEVEL 11+上运行,请使用
DatePicker.setMinDate(long)
您可以找到更多信息

您可以始终在按钮上添加一个if,强制此人重新输入有效的value@wazaminator但是如何检查有效的date.view.setMinDate(System.currentTimeMillis());在onDateSet(params)中尝试此操作。您可以始终在按钮上添加一个if,强制此人重新输入一个有效的参数value@wazaminator但是如何检查有效的date.view.setMinDate(System.currentTimeMillis());在onDateSet(params)中尝试这一点,处理您的概念。如果成功,则等待接受。谢谢:)@VarunVishnoi:badsah给出了一个正确的方法来解决你的问题。我已经把你可以使用的工作代码放在这里了。如果成功,则等待接受。谢谢:)@VarunVishnoi:badsah给出了一个正确的方法来解决你的问题。我已经在这里输入了您可以使用的工作代码。不工作bcz选择的日期为2013年5月17日,当前时间=>2013年6月17日星期一13:21:54。。。无法比较这些日期。@VarunVishnoi:看来您还没有尝试过我的代码。在比较之前,我已将当前日期转换为与所选日期相同的格式。您应该再次查看代码并尝试在项目中运行一次。不工作bcz选择日期17-5-2013和当前时间=>Mon Jun 17 13:21:54 IST 2013。。。无法比较这些日期。@VarunVishnoi:看来您还没有尝试过我的代码。在比较之前,我已将当前日期转换为与所选日期相同的格式。您应该再次查看代码,并尝试在项目中运行一次。