我想将最大日期设置为呈现日期。另外,我想让用户选择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年的范围。 在此先感谢..
答案 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());