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