javafx:如何检查日期是否大于今天的日期?

时间:2014-07-28 13:28:20

标签: javafx datapicker data-comparison

如果我有:

DatePicker dp = new DataPicker();

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

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

如何在JavaFX中完成?

2 个答案:

答案 0 :(得分:2)

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

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

请注意,chosenDate应该是Date,其中小时,分钟和秒设置为0,因为它可以接受与今天同一天的Date,但是比现在晚一点。

答案 1 :(得分:0)

您可以编写自定义方法,该方法将比较给定日期格式的给定日期,并返回true,当前日期为&#34;较旧&#34;比您感兴趣的日期,例如:

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

在纯JavaFX的上下文中,您可以通过调用String获取DatePicker所选日期的DatePicker.getValue().toString()值。

PS如果你只有一个DatePicker个对象,你可以使用&#34;隐藏&#34;方法,它将检查当前日期。它看起来像这样:

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