我有一个付款检查应用程序,因为我得到2个字符串:
String contractBegin = "01-01-2018";
String contractEnd = "31-12-2018";
现在每笔付款必须在当月的最后一个星期五完成。我需要计算这些日期并将其放在列表或数组中。
使用Java 8不错的功能有没有最佳方法呢?
我从这里开始:
String contractBegin = "01-01-2018";
String contractEnd = "31-12-2018";
LocalDate contractStart = LocalDate.parse(contractBegin, DateTimeFormatter.ofPattern("dd-MM-yyyy"));
LocalDate contractStop = LocalDate.parse(contractEnd, DateTimeFormatter.ofPattern("dd-MM-yyyy"));
System.out.println(contractStart);
System.out.println(contractStop);
List<LocalDate> payCheck= new ArrayList<>();
for (int i = 0; i < args.length; i++) {
payCheck.add(...) ??
}
答案 0 :(得分:3)
我不确定您的 args 数组。但是如果你想在合同开始和结束日期之间的每个月的最后一个星期五。我会这样做:
In [71]: np.savetxt("output.txt", np.argwhere(x>0.3)+1, fmt="%d", comments='')
In [72]: !cat output.txt
1 2
1 3
2 1
2 3
3 1
3 2
3 3
每个月的每个星期五都会给你。
答案 1 :(得分:2)
@gnostrenoff's answer的另一种替代方法是使用TemporalAdjusters.lastInMonth()
方法,该方法为您提供当月指定的最后一天:
// get the last Friday of the month
payCheckDate = payCheckDate.with(TemporalAdjusters.lastInMonth(DayOfWeek.FRIDAY));
while
循环的其余部分与@gnostrenoff's answer相同。