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.
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.