以下是使用Java获取上周第一天00:00:00和最后一天23:59:59的几种方法:
方法1:使用Java 8的java.time API(推荐)
import java.time.*;
import java.time.temporal.TemporalAdjusters;
public class LastWeekDates {
public static void main(String[] args) {
// 获取当前日期
LocalDate today = LocalDate.now();
// 获取上周的第一天(周一)和最后一天(周日)
LocalDate lastWeekMonday = today.minusWeeks(1).with(TemporalAdjusters.previousOrSame(DayOfWeek.MONDAY));
LocalDate lastWeekSunday = lastWeekMonday.plusDays(6);
// 转换为当天的开始和结束时间
LocalDateTime startOfLastWeek = lastWeekMonday.atStartOfDay(); // 00:00:00
LocalDateTime endOfLastWeek = lastWeekSunday.atTime(LocalTime.MAX); // 23:59:59.999999999
// 如果需要转换为Date对象
ZonedDateTime startZoned = startOfLastWeek.atZone(ZoneId.systemDefault());
ZonedDateTime endZoned = endOfLastWeek.atZone(ZoneId.systemDefault());
Date startDate = Date.from(startZoned.toInstant());
Date endDate = Date.from(endZoned.toInstant());
System.out.println("上周第一天(周一) 00:00:00: " + startOfLastWeek);
System.out.println("上周最后一天(周日) 23:59:59: " + endOfLastWeek);
}
}
方法2:使用Calendar类(旧版API)
import java.util.*;
import java.text.SimpleDateFormat;
public class LastWeekDatesLegacy {
public static void main(String[] args) {
Calendar calendar = Calendar.getInstance();
// 设置到上周
calendar.add(Calendar.WEEK_OF_YEAR, -1);
// 获取上周的第一天(周一)
calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
calendar.set(Calendar.HOUR_OF_DAY, 0);
calendar.set(Calendar.MINUTE, 0);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
Date startOfLastWeek = calendar.getTime();
// 获取上周的最后一天(周日)
calendar.add(Calendar.DAY_OF_WEEK, 6);
calendar.set(Calendar.HOUR_OF_DAY, 23);
calendar.set(Calendar.MINUTE, 59);
calendar.set(Calendar.SECOND, 59);
calendar.set(Calendar.MILLISECOND, 999);
Date endOfLastWeek = calendar.getTime();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
System.out.println("上周第一天(周一) 00:00:00: " + sdf.format(startOfLastWeek));
System.out.println("上周最后一天(周日) 23:59:59: " + sdf.format(endOfLastWeek));
}
}
943

被折叠的 条评论
为什么被折叠?



