我的问题陈述-
我的约会日期看起来像这样= LocalDate - 20180923
我需要编写一个需要3个输入的函数- 日期(2018-09-23), offset(1)=>表示我们需要找到上周的最后一个星期六, day(SATURDAY)=>表示我们需要查找星期六。
因此,在这种情况下,如果我调用函数getLastWeekDateForDay("20180923", 1, "SATURDAY")
=>,则应该返回字符串"20180922"
另一个例子-
getLastWeekDateForDay("20180923", 2, "FRIDAY") => "20180914"
我不知道如何解决这个问题。
答案 0 :(得分:4)
对于这种情况,您可以使用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