您可以轻松地使用Java 8 LoalDead来实现这一点,这是我的解决方案:
import java.time.LocalDate;
LocalDate now = LocalDate.now();
LocalDate weekStart = now.minusDays(7+now.getDayOfWeek().getValue()-1);
LocalDate weekEnd = now.minusDays(now.getDayOfWeek().getValue());
LocalDate previousMonth = now.minusMonths(1);
LocalDate monthStart = previousMonth.withDayOfMonth(1);
LocalDate monthEnd = previousMonth.withDayOfMonth(previousMonth.getMonth().maxLength());
System.out.println("WeekStart:"+weekStart+", weekEnd:"+weekEnd+", monthStart:"+monthStart+", monthEnd:"+monthEnd);
结果
周开始:2018-07-09,周末:2018-07-15,月开始:2018-06-01,月结束:2018-06-30
如果您将“现在”行更改为
LocalDate now = LocalDate.of(2018,07,15);
你会得到:
周开始:2018-07-02,周末:2018-07-08,月开始:2018-06-01,月结束:2018-06-30