在 Java 中获取某个日期的上周日期范围Java 8/11 版本
假设我有一个日期 2013 年 6 月 20 日
我如何获得上周的日期范围,即在这种情况下是6月9日至6月15日。
如果日期是2013年6月2日
范围应为5月26日至6月1日
假设我有一个日期 2013 年 6 月 20 日
我如何获得上周的日期范围,即在这种情况下是6月9日至6月15日。
如果日期是2013年6月2日
范围应为5月26日至6月1日
这是基于Java日历的解决方案
Date date = new Date();
Calendar c = Calendar.getInstance();
c.setTime(date);
int i = c.get(Calendar.DAY_OF_WEEK) - c.getFirstDayOfWeek();
c.add(Calendar.DATE, -i - 7);
Date start = c.getTime();
c.add(Calendar.DATE, 6);
Date end = c.getTime();
System.out.println(start + " - " + end);
输出
Mon Jun 10 13:22:01 EEST 2013 - Sun Jun 16 13:22:01 EEST 2013
它是本地化的,在我的区域设置周从星期一开始
final ZonedDateTime input = ZonedDateTime.now();
System.out.println(input);
final ZonedDateTime startOfLastWeek = input.minusWeeks(1).with(DayOfWeek.MONDAY);
System.out.println(startOfLastWeek);
final ZonedDateTime endOfLastWeek = startOfLastWeek.plusDays(6);
System.out.println(endOfLastWeek);