如果我有:
DatePicker dp = new DataPicker();
在某些时候我想知道数据是否大于今天,我该怎么做?
示例:如果我想从 2014 年 4 月 21 日开始在酒店预订房间,那应该是不可能的,因为今天是 28/07/2014。
我怎样才能在 JavaFX 中做到这一点?
如果我有:
DatePicker dp = new DataPicker();
在某些时候我想知道数据是否大于今天,我该怎么做?
示例:如果我想从 2014 年 4 月 21 日开始在酒店预订房间,那应该是不可能的,因为今天是 28/07/2014。
我怎样才能在 JavaFX 中做到这一点?
为确保给定日期Date chosenDate
在今天之后,您可以检查
if (chosenDate.after(new Date())) {
// valid (Date > today)
} else {
// invalid (Date <= today)
}
请注意,chosenDate
应该将 aDate
设置为小时、分钟和秒,0
否则它可以接受Date
与今天相同但比现在晚的小时。
您可以编写一个自定义方法,它将比较给定日期格式的给定日期,并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;
}