我的开始时间是:startTime:09-2017,结束时间是endTime:05-2018。我想计算每个月的数据量,然后相加以计算从开始到结束期间的数据。例如,开始时间为 09-2017,结束时间为 5-2018。在8个月的时间段内,我想计算每个月的数据,然后相加以计算所有时间段。我使用 for 循环来表示结束时间减去一个月。如果结束时间的月份等于开始时间的月份,则循环将停止。我将数据保存到 arrayList 中,一个月后我会将其添加回来。下面是我的代码:
开始时间:09-2017; 结束时间:05-2018;
@Autowired
private StudentDao studentDao;
//total students in 8 month
List<Student> students = new ArrayList<>();
//caculator data in everyMonth
for (int i = dateTimeNow.getMonthOfYear(); i >= 0; i--) {
//break if equal startTime.
LocalDateTime startTimeCaculator = endTime.getMonthOfYear().minusMonths(i-1);
List<Student> studentOnMonth =
studentDao.getDataEveryMonth(startTimeCaculator,endTime);
students.addAll(studentOnMonth);
}
我有两个问题。当我计算开始日期时,循环停止的条件是什么?其次,如果我使用 i = endTime.getMonthOfYear 变量,循环将从月末计数到零,并且不会历年计数。时间结束 5-2018,循环将运行 5 次,不计算 2017 年的月份。请帮忙。
最佳答案
您可以像这样使用 isAfter() 函数:
LocalDateTime endTime= ....; // 05-2018
LocalDateTime startTime= ....; // 09-2017
while(endTime.isAfter(startTime)){
endtime = endTime.minusMonths(1);
....
....
}
关于java - 如果知道时间,如何计算范围内每个月的数据并添加到一个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52136124/