LocalDate获取上周星期六的日期

时间:2018-10-01 20:35:51

标签: java datetime java-8

我的问题陈述- 我的约会日期看起来像这样= LocalDate - 20180923

我需要编写一个需要3个输入的函数- 日期(2018-09-23), offset(1)=>表示我们需要找到上周的最后一个星期六, day(SATURDAY)=>表示我们需要查找星期六。

因此,在这种情况下,如果我调用函数getLastWeekDateForDay("20180923", 1, "SATURDAY") =>,则应该返回字符串"20180922"

另一个例子- getLastWeekDateForDay("20180923", 2, "FRIDAY") => "20180914"

我不知道如何解决这个问题。

1 个答案:

答案 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);
}

如果dayOfWeekString,请使用DayOfWeek.valueOf(String name)

测试

System.out.println(getLastWeekDateForDay("20180923", 1, DayOfWeek.SATURDAY));
System.out.println(getLastWeekDateForDay("20180923", 2, DayOfWeek.FRIDAY));

输出

20180922
20180914