Android中的DatePickerDialog,日期验证

时间:2017-10-04 18:04:49

标签: android validation datepickerdialog

我有一个简单的活动,用户需要选择日期(仅限日期,没有时间)。我需要做出正确的验证。首先,我想把dayOfMonth,monthOfYear和year放入3个不同的Text View,然后使用" if else"写条件如(如果日< = 0或> = 31 ......)。我试过的代码:

        @Override
        public void onClick(View v) {
            final Calendar c = Calendar.getInstance();
            int mYear = c.get(Calendar.YEAR);
            int mMonth = c.get(Calendar.MONTH);
            int mDay = c.get(Calendar.DAY_OF_MONTH);

            datePickerDialog = new DatePickerDialog(Date.this,
                    new DatePickerDialog.OnDateSetListener() {

                        @Override
                        public void onDateSet(DatePicker view, int year,
                                              int monthOfYear, int dayOfMonth) {
                            tvDay.setText(dayOfMonth);
                            tvMonth.setText(monthOfYear);
                            tvYear.setText(year);


                        }
                    }, mYear, mMonth, mDay);
            datePickerDialog.show();
        }
    });

但它不起作用,我可以将dayOfMonth,monthOfYear年仅放入1 Text View。像这样:

       public void onClick(View v) {
            final Calendar c = Calendar.getInstance();
            int mYear = c.get(Calendar.YEAR);
            int mMonth = c.get(Calendar.MONTH);
            int mDay = c.get(Calendar.DAY_OF_MONTH);

            datePickerDialog = new DatePickerDialog(Date.this,
                    new DatePickerDialog.OnDateSetListener() {

                        @Override
                        public void onDateSet(DatePicker view, int year,
                                              int monthOfYear, int dayOfMonth) {
                            tvDate.setText(dayOfMonth + "/" + (monthOfYear + 1) + "/" + year);
                        }
                    }, mYear, mMonth, mDay);
            datePickerDialog.show();
        }
    });
}

在我的案例中如何正确地进行验证?这可能是个愚蠢的问题,很抱歉,我是新手。

谢谢。

2 个答案:

答案 0 :(得分:3)

您可以使用SimpleDateFormat,然后calanderObject.getTime()会以String

的形式为您提供格式正确的日期

这里我在方法中传递TextView的引用。但这并不重要。

private void setDate(final TextView tV) {
    final Calendar cal = Calendar.getInstance();

    DatePickerDialog dialog = new DatePickerDialog(this, new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
            SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MMM-yyyy", Locale.ENGLISH);
            cal.set(year, monthOfYear, dayOfMonth);
            tV.setText(dateFormat.format(cal.getTime()));
        }
    }, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), cal.get(Calendar.DAY_OF_MONTH));
    dialog.show();
}

答案 1 :(得分:0)

Dennis是对的我只想添加日期验证你可以使用日历对象,它具有所有这些很酷的操作,就像今天的日期匹配

if(someDate> = now){ ...

然后尝试自己实现它会容易得多,如果你有计算需要考虑闰年(每4年29/2的那一天)那么你应该使用继承自Calendar的GregorianCalendar。

https://developer.android.com/reference/java/util/GregorianCalendar.html