如何使用Java8获得上周和上个月

dai*_*dai 4 java datetime java-8

我有个约会,我需要知道约会之前的最后一周和最后一个月。

例如,

在2018年7月15日,它的最后一周是从7月2日到7月8日。它的最后一个月是6月1日到6月30日。

在2018年7月16日,它的最后一周是从7月9日到7月15日。它的最后一个月是6月1日到6月30日。

在2018年7月17日,它的最后一周是从7月9日到7月15日。它的最后一个月是6月1日到6月30日。

与基于Java-8的本地日期的第一个星期的第一天获取日期不同,我的问题是上周或上个月获取。

Jai*_*Jai 5

您可以使用这些辅助方法。

public static LocalDate[] getPreviousWeek(LocalDate date) {
    final int dayOfWeek = date.getDayOfWeek().getValue();
    final LocalDate from = date.minusDays(dayOfWeek + 6); // (dayOfWeek - 1) + 7
    final LocalDate to = date.minusDays(dayOfWeek);

    return new LocalDate[]{from, to};
}

public static LocalDate[] getPreviousMonth(LocalDate date) {
    final LocalDate from = date.minusDays(date.getDayOfMonth() - 1).minusMonths(1);
    final LocalDate to = from.plusMonths(1).minusDays(1);

    return new LocalDate[]{from, to};
}
Run Code Online (Sandbox Code Playgroud)

实际上,有许多写方法。我建议您自己进行一些探索。