1

如果我有:

DatePicker dp = new DataPicker();

在某些时候我想知道数据是否大于今天,我该怎么做?

示例:如果我想从 2014 年 4 月 21 日开始在酒店预订房间,那应该是不可能的,因为今天是 28/07/2014。

我怎样才能在 JavaFX 中做到这一点?

4

2 回答 2

2

为确保给定日期Date chosenDate在今天之后,您可以检查

if (chosenDate.after(new Date())) {
    // valid (Date > today)
} else {
    // invalid (Date <= today)
}

请注意,chosenDate应该将 aDate设置为小时、分钟和秒,0否则它可以接受Date与今天相同但比现在晚的小时。

于 2014-07-28T14:34:48.453 回答
0

您可以编写一个自定义方法,它将比较给定日期格式的给定日期,并true在当前日期“早于”您感兴趣的日期时返回,例如:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class Demo {

    public static void main(String args[]) {
        System.out.println(isDateOfInterestValid("yyyy-mm-dd", 
                "2014-08-25", "2014-08-28"));
    }

    public static boolean isDateOfInterestValid(String dateformat, 
            String currentDate, String dateOfInterest) {

        String format = dateformat;
        SimpleDateFormat sdf = new SimpleDateFormat(format);
        Date cd = null;  // current date
        Date doi = null; // date of interest

        try {
            cd = sdf.parse(currentDate);
            doi = sdf.parse(dateOfInterest);
        } catch (ParseException e) {
            e.printStackTrace();
        }

        long diff = cd.getTime() - doi.getTime();
        int diffDays = (int) (diff / (24 * 1000 * 60 * 60));

        if (diffDays > 0) {
            return false;
        } else {
            return true;
        }
    }
}

String在纯 JavaFX的上下文中,您可以DatePicker通过调用DatePicker.getValue().toString().

PS 如果您只有一个DatePicker对象,您可以使用“隐藏”方法,该方法将检查当前日期。它看起来像这样:

public static String currentDate(String separator) {
    Calendar date = new GregorianCalendar();
    String day = Integer.toString(date.get(Calendar.DAY_OF_MONTH));
    String month = Integer.toString(date.get(Calendar.MONTH) + 1);
    String year = Integer.toString(date.get(Calendar.YEAR));
    if (month.length() < 2) {
        month = "0" + month;
    }
    if (day.length() < 2) {
        day = "0" + day;
    }
    String regDate = year + separator + month + separator + day;
    return regDate;
}
于 2014-07-28T13:56:44.610 回答