我的双周付款从2015年1月1日开始(这就是我的Date对象中的日期,顺便说一下,是星期四)。

我如何确定我何时必须在2018年5月支付我的第一笔付款? (我不在乎一个月内第二笔或第三笔付款)。

我将展示我已经完成的工作,但是我无法开始考虑如何思考这个问题。

最佳答案

如果您希望不进行任何循环或迭代就这样做,则只需要一点技巧即可:

    LocalDate firstPayment = LocalDate.of(2015, Month.JANUARY, 1);
    // The first payment in May 2018 must be within the first 14 days of May.
    long weeksAfterFirst
            = ChronoUnit.WEEKS.between(firstPayment, LocalDate.of(2018, Month.MAY, 14));
    // We need an even number of weeks
    if (weeksAfterFirst % 2 != 0) {
        weeksAfterFirst--;
    }
    LocalDate firstInMay = firstPayment.plusWeeks(weeksAfterFirst);
    System.out.println(firstInMay);


此打印


  2018-05-03


对于如何开始这项任务,第一步是研究日期和时间库以了解可能性。教程链接:Oracle tutorial: Date Time说明如何使用java.time

09-27 20:34