Javafx使用日期选择器

时间:2014-09-09 21:19:49

标签: java date calendar datepicker javafx

我正在使用Scene Builder创建Java Fx应用程序。我有两个日期选择器Date1和Date Two。我需要计算Date1和Date2之间的天数,不包括任何星期天。我已经搜索了各种答案,但没有人满足。

任何帮助都非常感激。

1 个答案:

答案 0 :(得分:1)

以下情况应该有效。

long date1 = datePicker1.getvalue().toEpochDay();
long date2 = datePicker2.getvalue().toEpochDay();
int  days  = (int) Math.abs(date1 - date2);

示例:

long date1 = 16322; // 09/09/2014
long date2 = 16329; // 09/16/2014
int  days  = (int) Math.abs(date1 - date2);

System.out.println(days); // 7 Days

注意:我认为jfx2.0没有内置的DatePicker,所以我假设你使用的是jdk8。

另外,我从这个问题中提取了datePicker.getvalue().toEpochDay()逻辑:
Stack Overflow: Get value from Date picker;处理jfx8。

LocalDatetoEpochDay()中的纪元是自1970年1月1日以来的天数。


额外学分

要从下面的评论中回答您的问题,您可以执行以下操作。

int days = daysBetween(
    datePicker1.getvalue(),
    datePicker2.getvalue(),
    Arrays.asList(DayOfWeek.SUNDAY)
);

public static int daysBetween(LocalDate start, LocalDate end, List<DayOfWeek> ignore) {
    int count = 0;
    LocalDate curr = start.plusDays(0); // Create copy.
    while (curr.isBefore(end)) {
        if (!ignore.contains(curr.getDayOfWeek()))
            count++;
        curr = curr.plusDays(1); // Increment by a day.
    }
    return count;
}