java - 如果知道时间,如何计算范围内每个月的数据并添加到一个列表

标签 java spring spring-mvc datetime time

我的开始时间是: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/

相关文章:

java - 如何定位具有使用 Thymeleaf 组成的 id 的输入字段的值

javascript - Spring mvc security and WEB-INF js,images access-拒绝从 'http://localhost:8081/xyz/static/internal/js/jquery-1.10.2.min.js'执行脚本

java - 素数的计算方法

Java Spring 3 MVC Controller 显式加载服务

java - Spring MVC @Controller 和配置文件

spring - 解决第三方包中的bean冲突

java - Spring 休息: Bad Request for pojo with LocalDateTime

java - 在 Android 应用程序中保留所有 Activity 的列表有什么用?

java - 使用 Spring 发送电子邮件

spring - 使用 Mockito 和 Spring MockMVC 在模拟中 stub 两个方法会抛出异常