如何在日期选择器中设置日期限制

Posted

技术标签:

【中文标题】如何在日期选择器中设置日期限制【英文标题】:How to set date limit in date picker 【发布时间】:2016-11-05 19:56:48 【问题描述】:

在我的应用程序中,我必须显示从当前日期起 5 年前的日期,例如今天是 2016 年 7 月 4 日,但在我的日期选择器中,它将显示为 2011 年 7 月 4 日,用户不能选择 2011 年 7 月 4 日之后的日期,但可以选择2011 年 7 月 4 日之前及之后。

我见过像Click here这样的例子

 DatePickerDialog mDate = new DatePickerDialog(DatePicker.this, date, year, month, day);
            maxDate = Calendar.getInstance();
            maxDate.add(Calendar.YEAR,  -5);
            mDate.getDatePicker().setMaxDate(maxDate.getTimeInMillis());
            mDate.show();

我已经尝试过这个并且它在 1900 年 1 月到 2011 年 7 月 4 日期间完美运行,但我想要的一件事是,当我点击日历中的日期时,它显示 1900 年 1 月,我想要的是当我点击它时,它应该从 2011 年 7 月开始显示然后是向后日期。

【问题讨论】:

请分享您的代码。您是否尝试过按照示例进行操作? 您能展示一下到目前为止您尝试过的内容吗? 请参考此链接developer.android.com/guide/topics/ui/controls/pickers.html 贴一些代码,比如你要做到多远? 【参考方案1】:

解决方案-1

你可以设置:

long years4 = 126144000; //4 years in seconds
long years_millis4 = years4*1000; //4 years in milliseconds, which is required format in date picker

dateDialog.getDatePicker().setMaxDate((new Date().getTime())-years_millis4);

dateDialog 是一个

new DatePickerDialog()

并且为 MaxDate 和 MinDate 设置的参数类型是 long

希望这适用于您的情况。

除此之外,您可以将侦听器添加到您的日期选择器中,您可以使用它来提示用户,以防他选择了所需日期以外的任何日期。

解决方案 2

您可以使用微调器和自定义日期作为微调器中的列表来实现自定义日期选择器。在获取输入时应用适当的转换。

确保 java.util.Date.getTime() 方法返回自 1970 年 1 月 1 日 00:00:00 GMT 以来经过的毫秒数。

【讨论】:

感谢您的回答,但是当日期选择器打开它的显示日期时,日期从 1900 年 1 月开始,但我希望当我打开日期选择器时,它应该显示从 2011 年开始,即当前年份前 5 年,用户可以过去点击向后的日期。 就像max一样,你也可以设置最小限制,你也可以使用相同的方法设置初始值

以上是关于如何在日期选择器中设置日期限制的主要内容,如果未能解决你的问题,请参考以下文章

如何在物化日期选择器中设置日期

如何在android的日期选择器中设置特定日期

如何在日期选择器中设置 3 个月的日期范围?

在日期选择器中设置最大日期时可以选择未来日期

在android中设置时间和日期到日期选择器和时间选择器

如何在 android 的 datepicker 对话框中设置最大日期?