Codenameone 避免在日历代号1中选择未来日期

Codenameone 避免在日历代号1中选择未来日期,codenameone,Codenameone,我有日历,所以我可以通过以下方式获取日期: Calendar cld = new Calendar(); cld.getCurrentDate(); 此外: 所以我有当前日期和我在日历中选择的日期。我想做的是: Date currentdate = cld.getCurrentDate(); Date chosendate = cld.getDate(); long math = Math.abs(currentdate.getTime() - chosendate.getTime()); l

我有日历,所以我可以通过以下方式获取日期:

Calendar cld = new Calendar();
cld.getCurrentDate();
此外:

所以我有当前日期和我在日历中选择的日期。我想做的是:

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);
My isDateValid()方法:

import java.util.Calendar;
公共类日期验证器{
公共布尔值isDateValid(整数年、整数当前月、整数天){
如果(日历月<当前月-1)返回false;
否则{
返回true;
}
}
}

我必须创建一个新类,因为我已经在另一个类中使用了Codename One中的Calendar,它不提供
Calendar.MONTH
。我不能选择未来的月份,但它仍然允许我选择未来的日子和未来的岁月。我希望我可以使用原始java.util.Date中的Date.after()方法,而Codename One中的Date没有after()方法,这让我很难找到解决方法。有什么帮助吗?

您可以派生日历,并自己提供该逻辑:

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();
}
private boolean isDateValid(整数年、整数当前月、整数天){
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\u OF_MONTH,DAY);
返回cld.getTime().getTime()
谢谢Shai,你提到的
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;
        }
    }

}
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));
   }
};
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();
}