【问题标题】:Set maximum Date in DatePicker在 DatePicker 中设置最大日期
【发布时间】:2014-09-12 05:56:28
【问题描述】:

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

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

而且它有效。它允许用户选择 100 年范围(2014-1914)之间的日期。但问题是,如果用

减去 System.currentTimeMillis()
100 * 12 * 30 * 24 * 60* 60 * 1000,

当我选择对话框时,不是显示当前日期,而是显示 2014 年 9 月 2 日。如何设置 100 年范围。 在此先感谢..

【问题讨论】:

    标签: android datepicker


    【解决方案1】:
    100 * 12 * 30 * 24 * 60* 60 * 1000
    

    此表达式以 32 位 int 精度计算,但该值太大而无法放入 32 位。要使用 64 位 long 进行计算,请将因子之一设为 longL,例如

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

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

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

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

    【讨论】:

    • 您要我跳过第一种方法并使用第二种方法?
    • 使用后者。第一个只是指出为什么计算不起作用。
    • 它将当前日期设置为 1914。我想让用户在 100 年之间的范围内滚动。并在滚动时显示当前日期
    【解决方案2】:

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

    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());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-13
      • 1970-01-01
      • 2014-01-15
      • 2018-05-22
      • 2012-04-25
      相关资源
      最近更新 更多