如果我有:
DatePicker dp = new DataPicker();
并且在某些时候我想知道数据是否比今天更大,我该怎么做?
实施例: 如果我想从2014年4月21日起在酒店预订房间,那应该是不可能的,因为今天是28/07/2014。
如何在JavaFX中完成?
答案 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;
}