我的双周付款从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
。