Java 实例计算瞬间之间的持续时间

Java Instance Calculate Duration between the Instant

public class Student {
    String firstName;
    String secondName;
    Instant lastClassAttendedOn;
}

你好,我一直被一个问题困扰,我有学生名单,我想找出上周至少参加过一次 class 的所有学生。前一周是指从前一周的周一到前一周的周五,因为学校周六周日放假。我可能会在一周中的任何一天查看列表,例如在星期三,所以我应该让所有在上周 class 至少参加过

的学生

因为我们只处理几天,所以使用 LocalDate 就足够了。从当前/今天的日期找出前一周的开始和结束日期。然后循环遍历列表并过滤出从开始日期开始的结果。

LocalDate currentDate = LocalDate.now();

LocalDate start = currentDate.with(TemporalAdjusters.previous(DayOfWeek.MONDAY));
LocalDate end = currentDate.with(TemporalAdjusters.previous(DayOfWeek.FRIDAY));
for(Student student : studentsList) {
    Instant lastAccessedOn = student.getLastAccessedOn();
    LocalDate accessedDate = 
        lastAccessedOn.atZone(ZoneId.systemDefault()).toLocalDate();

    int noOfDays = start.until(accessedDate).getDays();
    if (noOfDays >= 0 && noOfDays <= 4) {
        // match found. Take this student
    }
}

此处,如果 accessedDate 位于较早的几周,则 noOfDays 可能具有负值。所以,检查 >= 0。我们想限制到前一周的星期五。所以它应该是 <= 4.