将最小可选日期设置为过去15年(来自mySQL)并将最大值设置为当前日期

时间:2017-05-04 08:18:33

标签: java mysql date netbeans datechooser

我有一个包含用户的mySQL用户表'生日。 我已将sql中的日期存储为变量DateOfBirth。 现在,我想将jDateChooser GameDateChooser的最小可选日期设置为生日后15年 和当前日期的最大可选日期。 我试着搜索其他文章,但他们没有回答我的问题

2 个答案:

答案 0 :(得分:0)

从java doc中有ember-changeset,它可以接受两个日期,分钟和最大值:

public void setSelectableDateRange(java.util.Date min, java.util.Date max)

在你的情况下你需要这样的东西:

Calendar cal = Calendar.getInstance();
cal.add(Calendar.YEAR, -15);//15 year before
Date min = cal.getTime();

Date max = new Date();//actual date

JDateChooser jDateChooser = new JDateChooser();
//set your dates in your JDateChooser
jDateChooser.setSelectableDateRange(min, max);

答案 1 :(得分:0)

即使setSelectableDateRange()需要两个老式Date个对象,我仍然希望使用现代类进行年龄计算,而不是过时的Calendar

    LocalDate dateOfBirth = LocalDate.of(1959, Month.FEBRUARY, 15);
    Instant min = dateOfBirth.plusYears(15)
            .atStartOfDay(ZoneId.systemDefault())
            .toInstant();
    jDateChooser.setSelectableDateRange(Date.from(min), new Date());

LocalDateInstant内置了Java 8及更高版本,也可用于Java 6和7. Date.from(Instant)仅适用于Java 8及更高版本,适用于Java 6和7还有其他转换选项。一个足够新的MySQL JDBC驱动程序应该能够从数据库中检索LocalDate