在DatePicker中设置最大日期

时间:2014-09-12 05:56:29

标签: android datepicker

我想将最大日期设置为呈现日期。另外,我想让用户选择100年范围之间的日期。 例如: 我想让用户选择(2014-1914)范围之间的年份。即只有100年的范围。因此,用户只能选择此范围之间的日期。我写了这段代码:

dialog.getDatePicker().setMaxDate(System.currentTimeMillis()-100 * 12 * 30 * 24 * 60
    * 60 * 1000);

它有效。它允许用户选择100年范围(2014-1914)之间的日期。但问题是,如果用{/ p>减去System.currentTimeMillis()

100 * 12 * 30 * 24 * 60* 60 * 1000,

当我选择对话框而不是显示当前日期时,它会显示2014年9月号。我该怎么做才能设置100年的范围。 在此先感谢..

2 个答案:

答案 0 :(得分:1)

100 * 12 * 30 * 24 * 60* 60 * 1000

此表达式使用32位int精度计算,但该值太大而不适合32位。要使用64位long进行计算,请将long中的一个因子设为L,例如

100L * 12 * 30 * 24 * 60* 60 * 1000

但是,请考虑将Calendar用于日期时间数学。例如,

Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR, -100);
long hundredYearsAgo = c.getTimeInMillis();

然后将hundredYearsAgo设为minDate,将当前时间设为maxDate

答案 1 :(得分:0)

使用Calendar类在DatePicker中设置最大和最小日期范围。 示例代码。

Calendar c = Calendar.getInstance();
c.set(Calendar.YEAR, 2015);
c.set(Calendar.MONTH, Calendar.JANUARY);
c.set(Calendar.DAY_OF_MONTH, 1);

//set Max date
picker.getDatePicker().setMaxDate(c.getTimeInMillis());

//Set Min date
picker.getDatePicker().setMinDate(c.getTimeInMillis());