我的问题陈述-
我的约会看起来像这样= LocalDate - 20180923
我需要编写一个需要3个输入的函数-
日期(2018-09-23),
offset(1)=>表示我们需要找到上周的最后一个星期六,
day(SATURDAY)=>表示我们需要查找星期六。
因此,在这种情况下,如果我调用函数getLastWeekDateForDay("20180923", 1, "SATURDAY")
=>,则应该返回字符串"20180922"
另一个例子 -getLastWeekDateForDay("20180923", 2, "FRIDAY") => "20180914"
我不知道如何解决这个问题。
最佳答案
对于这样的事情,您可以使用TemporalAdjusters
,如下所示:
public static String getLastWeekDateForDay(String date, int offset, DayOfWeek dayOfWeek) {
return LocalDate.parse(date, DateTimeFormatter.BASIC_ISO_DATE)
.with(TemporalAdjusters.nextOrSame(dayOfWeek))
.minusWeeks(offset)
.format(DateTimeFormatter.BASIC_ISO_DATE);
}
如果
dayOfWeek
是String
,请使用DayOfWeek.valueOf(String name)
。测试
System.out.println(getLastWeekDateForDay("20180923", 1, DayOfWeek.SATURDAY));
System.out.println(getLastWeekDateForDay("20180923", 2, DayOfWeek.FRIDAY));
输出量
20180922
20180914