我有一个日历,所以我可以通过以下方式获取日期:
Calendar cld = new Calendar();
cld.getCurrentDate();
也:
cld.getDate();
所以我有当前日期和我在日历中选择的日期。我试图做的是:
Date currentdate = cld.getCurrentDate();
Date chosendate = cld.getDate();
long math = Math.abs(currentdate.getTime() - chosendate.getTime());
long result = math / (24 * 60 * 60 * 1000);
if(result < 0)Dialog.show("Invalid Date", "Please select a valid date.", "OK", null);
不确定我的方法是否正确,实际上我想要一种避免从日历中获取未来日期的方法,如何在Codename One中做到这一点?
编辑:
Calendar cld = new Calendar() {
protected void updateButtonDayDate(Component dayButton, int year, int currentMonth, int day) {
super.updateButtonDayDate(dayButton, year, currentMonth, currentDay);
dayButton.setEnabled(isDateValid(year, currentMonth, day));
}
};
我的isDateValid()方法:
import java.util.Calendar;
public class DateValidator {
public boolean isDateValid(int year, int currentMonth, int day) {
if(Calendar.MONTH < currentMonth-1)return false;
else {
return true;
}
}
}
我必须创建一个新类,因为我已经在其他类中使用了Codename One中的Calendar,并且它没有提供Calendar.MONTH
。我无法接受未来的几个月,但它仍然让我能够了解未来的日子和未来的岁月。我希望我可以使用原始java.util.Date中的Date.after()方法,来自Codename One的Date没有在()后面的方法,这使我很难找到方法。有什么帮助吗?
答案 0 :(得分:2)
您可以导出Calendar
并自己提供该逻辑:
Calendar cld = new Calendar() {
protected void updateButtonDayDate(Component dayButton, int year, int currentMonth, int day) {
super.updateButtonDayDate(dayButton, year, currentMonth, currentDay);
dayButton.setEnabled(isDateValid(year, currentMonth, day));
}
};
isDateValid()
在这种情况下只能是过去的日期:
private boolean isDateValid(int year, int currentMonth, int day) {
java.util.Calendar cld = java.util.Calendar.getInstance();
cld.set(java.util.Calendar.YEAR, year);
cld.set(java.util.Calendar.MONTH, currentMonth);
cld.set(java.util.Calendar.DAY_OF_MONTH, day);
return cld.getTime().getTime() < System.currentTimeMillis();
}