我试图遍历一组事件并获取每个事件的开始和结束时间,并计算每个事件的持续时间。然后,我需要将所有持续时间加在一起以获得总时间。我正在使用的代码仅获取上一个事件的持续时间,并且未将它们全部加在一起。我不太确定我使用的循环是否正确?
Set<Event> events = eventService.findByUsers(user);
Long duration = null;
for(Event event : events)
{
LocalTime startTime = event.getStart().toLocalTime();
LocalTime endTime = event.getEnd().toLocalTime();
duration = Duration.between(startTime, endTime).toHours();
System.out.println("The time bewtween shifts is " + duration);
Long totalTime = duration += duration;
}
任何帮助将不胜感激
答案 0 :(得分:3)
将totalTime
变量的声明移到循环外:
Set<Event> events = eventService.findByUsers(user);
long totalTime = 0;
for(Event event : events)
{
LocalTime startTime = event.getStart().toLocalTime();
LocalTime endTime = event.getEnd().toLocalTime();
long duration = Duration.between(startTime, endTime).toHours();
System.out.println("The time bewtween shifts is " + duration);
totalTime += duration;
}
使用当前的方法,totalTime
变量将在每次迭代时再次初始化,因此将仅包含最后的持续时间。