-1

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

4

2 回答 2

0

从 java doc 中有setSelectableDateRange,它可以接受两个日期, min 和 max :

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);
于 2017-05-04T08:51:59.920 回答
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从数据库中检索 a。

于 2017-05-04T10:33:15.017 回答