java如何获取上周
获取上周日期范围的Java方法
使用java.time包中的类可以方便地处理日期时间操作。以下方法适用于Java 8及以上版本。
获取上周的起始和结束日期(周一至周日)
LocalDate today = LocalDate.now();
LocalDate lastWeekStart = today.minusWeeks(1).with(DayOfWeek.MONDAY);
LocalDate lastWeekEnd = lastWeekStart.plusDays(6);
System.out.println("上周开始日期: " + lastWeekStart);
System.out.println("上周结束日期: " + lastWeekEnd);
获取上周的起始和结束日期(周日为周起始日)
LocalDate today = LocalDate.now();
LocalDate lastWeekStart = today.minusWeeks(1).with(DayOfWeek.SUNDAY);
LocalDate lastWeekEnd = lastWeekStart.plusDays(6);
System.out.println("上周开始日期: " + lastWeekStart);
System.out.println("上周结束日期: " + lastWeekEnd);
获取上周特定日期的Java方法
获取上周的今天
LocalDate today = LocalDate.now();
LocalDate lastWeekSameDay = today.minusWeeks(1);
System.out.println("上周今天: " + lastWeekSameDay);
处理时区敏感的情况
如果需要考虑时区,可以使用ZonedDateTime:
ZoneId zone = ZoneId.of("Asia/Shanghai");
ZonedDateTime now = ZonedDateTime.now(zone);
ZonedDateTime lastWeek = now.minusWeeks(1);
System.out.println("上周此刻: " + lastWeek);
使用Calendar类(旧版API)
对于Java 8以下版本,可以使用Calendar类:
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.WEEK_OF_YEAR, -1);
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
Date lastWeekMonday = calendar.getTime();
System.out.println("上周周一: " + lastWeekMonday);
格式化输出日期
使用DateTimeFormatter可以格式化日期输出:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd");
String formattedStart = lastWeekStart.format(formatter);
String formattedEnd = lastWeekEnd.format(formatter);
System.out.println("格式化上周日期范围: " + formattedStart + " 至 " + formattedEnd);
以上方法提供了不同场景下获取上周日期的解决方案,可以根据具体需求选择合适的实现方式。java.time包的方法更推荐使用,因其API设计更现代且线程安全。






