【问题标题】:How to open DatePicker from current date to 18 years Back?如何打开从当前日期到 18 年前的 DatePicker?
【发布时间】:2019-11-09 04:40:26
【问题描述】:

我想打开我的 DatePicker 从当前日期到 18 年前的 DateofBirth Validation。

【问题讨论】:

  • LocalDate.now(yourTimeZone).minusYears(18)。在 Android 上使用来自 java.time(现代 Java 日期和时间 API)的 LocalDate 需要 API 级别 26,或者您将 ThreeTenABP 添加到项目中。将 LocalDate 中的月份值传递给您的日期选择器时,请记住减去 1,因为日期选择器从 0 开始编号月份。

标签: android validation datepicker date


【解决方案1】:

只需添加以下行

 myCalendar.add(Calendar.YEAR,-18)
 new DatePickerDialog(getActivity(), dateExpiry, myCalendar
                    .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                    myCalendar.get(Calendar.DAY_OF_MONTH)).show();
        }

【讨论】:

  • @Mega Infomatix
【解决方案2】:

这可能不是您一直在寻找的。但是,尽管如此,您仍然可以有起点并对其进行操作。请确保更新下面提到的答案。

在 XML 文件中试试这个:

<EditText
   android:id="@+id/Birthday"
   custom:font="@string/font_avenir_book"
   android:clickable="true"
   android:editable="false"
   android:hint="@string/birthday"/>

现在在 Java 文件中:

final Calendar myCalendar = Calendar.getInstance();

EditText edittext= (EditText) findViewById(R.id.Birthday);
DatePickerDialog.OnDateSetListener date = new DatePickerDialog.OnDateSetListener() {

    @Override
    public void onDateSet(DatePicker view, int year, int monthOfYear,
            int dayOfMonth) {
        // TODO Auto-generated method stub
        myCalendar.set(Calendar.YEAR, year);
        myCalendar.set(Calendar.MONTH, monthOfYear);
        myCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
        updateLabel();
    }

};

edittext.setOnClickListener(new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        new DatePickerDialog(classname.this, date, myCalendar
                .get(Calendar.YEAR), myCalendar.get(Calendar.MONTH),
                myCalendar.get(Calendar.DAY_OF_MONTH)).show();
    }
});

现在在上述活动中添加方法。

private void updateLabel() {
    String myFormat = "MM/dd/yy"; //In which you need put here
    SimpleDateFormat sdf = new SimpleDateFormat(myFormat, Locale.US);

    edittext.setText(sdf.format(myCalendar.getTime()));
}

在 EditText 的 xml 文件中添加 android:focusable="false" 以允许单次触摸。

此答案已从Datepicker: How to popup datepicker when click on edittext 复制。

【讨论】:

  • 但根据问题,它与 18 年前的点没有任何关系
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多