【问题标题】:Javafx Using Date PickerJavafx 使用日期选择器
【发布时间】:2014-11-03 09:53:36
【问题描述】:

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

非常感谢任何帮助。

【问题讨论】:

  • 您在从日期选择器获取日期或计算差异时遇到问题吗?
  • @Mr. Polywhirl - 感谢您的帖子。我正在使用jdk8。我使用了建议的代码并基于使用 01/09/2014 为 Date1 和 14/09/2014 为 Date2 得到了 1.5046296E-4。我想计算这些天之间的天数减去星期日(14 天减去两个星期日,因此返回 12)。

标签: java date calendar datepicker javafx


【解决方案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。

LocalDate.toEpochDay() 中的纪元是自 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;
}

【讨论】:

  • 感谢您的帖子。我正在使用jdk8。我使用了建议的代码并基于使用 01/09/2014 为 Date1 和 14/09/2014 为 Date2 得到了 1.5046296E-4。我想计算这些日期之间的天数减去星期日(14 天减去两个星期日,所以返回 12)
  • 我更新了我的答案。查看我更新的答案。 抱歉,我没有真正测试 toEpochDay 代码...如果您的答案中的差异是 0.0001505,那么您不需要除以 86,400。
  • 谢谢,它现在正在计算两个 DatePicker 日期之间的天数。我只希望它计算日期之间的天数,不包括星期日的计算。例如。包含两个星期日的 14 天期间只会计算为 12。
  • 谢谢,这行得通,int count 必须设置为 1 才能允许 01/09/2014 -01/09/2014 算作一天。如果开始日期或结束日期是星期日,则将天数减一。
猜你喜欢
  • 2018-01-07
  • 1970-01-01
  • 2014-05-21
  • 1970-01-01
  • 1970-01-01
  • 2023-04-09
  • 2020-01-04
  • 1970-01-01
  • 2012-04-29
相关资源
最近更新 更多