我有一个包含用户生日的 mySQL 用户表。我已将 sql 中的日期存储为变量DateOfBirth
。现在,我想将jDateChooser
命名GameDateChooser
为生日后 15 年的最小可选日期和最大可选日期设置为当前日期。我尝试搜索其他文章,但他们没有回答我的问题
问问题
1035 次
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());
LocalDate
并Instant
内置于 Java 8 及更高版本,也可用于 Java 6 和 7。Date.from(Instant)
仅 Java 8 及更高版本,对于 Java 6 和 7,还有其他转换选项。一个足够新的 MySQL JDBC 驱动程序应该能够LocalDate
从数据库中检索 a。
于 2017-05-04T10:33:15.017 回答