首页 > 解决方案 > 如何使用java8获取上周和上个月

问题描述

我有一个日期,我需要知道日期之前的最后一周和上个月。

例如,

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日。

它与get-date-of-first-day-of-week-based-on-localdate-now-in-java-8 不同,我的问题是上周或上个月。

标签: javadatetimejava-8

解决方案


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

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};
}

实际上有很多方法可以写这个。我建议你自己做一些探索。


推荐阅读