如何设置从即时时间或日期向后两年的最小日期(使用datepicker android)

如何设置从即时时间或日期向后两年的最小日期(使用datepicker android),android,Android,在我的一个应用程序上,我使用datepicker类从存档中检索数据。 我需要设置**最大值和最小值**。在DatePicker.Dialog上, 我可以将**最大值设置为当前时间**,但我计算了**最小值**的do。如果有人能帮助我,我真的很感激。提前谢谢 我正在查看设置为当前年份的设置 和setMinDate=本年度(本年度-2)后两年 注:我想看看这个问题是否已经得到了回答。但是,我找不到。我所看到的是minData=当前时间dialog.getDatePicker().setMinDate

在我的一个应用程序上,我使用datepicker类从存档中检索数据。 我需要设置**最大值和最小值**。在DatePicker.Dialog上,
我可以将**最大值设置为当前时间**,但我计算了**最小值**的do。如果有人能帮助我,我真的很感激。提前谢谢

我正在查看设置为当前年份的设置 和setMinDate=本年度(本年度-2)后两年 注:我想看看这个问题是否已经得到了回答。但是,我找不到。我所看到的是minData=当前时间dialog.getDatePicker().setMinDate(newDate().getTime())这不是我想要的。我想将其设置为与当前年份不同的年份

下面是我的部分代码:

//带有+符号的Floting按钮的剪贴画

@Override
public void onClick(View v) {
    switch (v.getId()) {

        case imageButtonCalendar:
            Calendar c = Calendar.getInstance();
            final int[] mYear = {c.get(Calendar.YEAR)};
            final int[] mMonth = {c.get(Calendar.MONTH)};
            final int[] mDay = {c.get(Calendar.DAY_OF_MONTH)};
            DatePickerDialog.OnDateSetListener pDateSetListener = new DatePickerDialog.OnDateSetListener() {
                public void onDateSet(DatePicker view, int year,
                                      int monthOfYear, int dayOfMonth) {
                    mYear[0] = year;
                    mMonth[0] = monthOfYear;
                    mDay[0] = dayOfMonth;

                    et.setText(new StringBuilder()
                            // to set date in editext
                            .append(mDay[0]).append("/").append(mMonth[0] + 1)
                            .append("/").append(mYear[0]).append(" "));
                }
            };
            DatePickerDialog dialog = new DatePickerDialog(getActivity(), pDateSetListener, mYear[0], mMonth[0], mDay[0]);

            dialog.getDatePicker().setMaxDate(new Date().getTime());
            dialog.getDatePicker().setMinDate(new Date().getTime(),-year);

            dialog.show();

        break;

减去2年后的日期:

Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR, -2);
dialog.getDatePicker().setMinDate(calendar.getTime()); // set min date 

减去2年后的日期:

Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.YEAR, -2);
dialog.getDatePicker().setMinDate(calendar.getTime()); // set min date 

您可以使用日历类:

Calendar cal = Calendar.getInstance()
cal.add(Calendar.DATE, -7);
System.out.println("Date = "+ cal.getTime());

是日期的最佳Java库。

您可以使用Calendar类:

Calendar cal = Calendar.getInstance()
cal.add(Calendar.DATE, -7);
System.out.println("Date = "+ cal.getTime());

是最适合日期的Java库。

附带说明-如果有人更改设备时间怎么办?只需从开始年份中减去2,并将其用于
设置日期(…)
call.@Skynet:minDate仍然比设备时间早2年,不管它是否正确。@Squonk我只是在旁注上说了我的评论:)是正确的-如果有人更改了设备时间怎么办?只需从开始年份中减去2,并将其用于
setMinDate(…)
call.@Skynet:minDate仍然比设备时间早2年,不管它是否正确。@Squonk我的评论只是指正确性:)嗯,接近但不正确。OP不需要格式化字符串-他们需要设置一个
日期选择器
。只需使用上面示例中的逻辑即可。谢谢您的回复!我有triad SimpleDataFormat。但是,由于我使用DatePicker,它对我不起作用。除非这是一种实现它的方法。如果有,请告诉我。谢谢,很接近,但不正确。OP不需要格式化字符串-他们需要设置一个
日期选择器
。只需使用上面示例中的逻辑即可。谢谢您的回复!我有triad SimpleDataFormat。但是,由于我使用DatePicker,它对我不起作用。除非这是一种实现它的方法。如果有,请告诉我。谢谢