List<ReportDayDataVo> dayDataList = new ArrayList<>();
for ( int i=0 ; i<24 ; i++ ) {
ReportDayDataVo reportDayDataVo = new ReportDayDataVo();
reportDayDataVo.setPeriod(i);
reportDayDataVo.setActivityDist(0);
reportDayDataVo.setActivitySec(0);
reportDayDataVo.setDataFlag(false);
dayDataList.add(reportDayDataVo);
}
LocalDateTime strDt = vo.getPlyStrDtm(); // 시작시간
LocalDateTime endDt = vo.getPlyEndDtm(); // 종료시간
int strHour = strDt.getHour();
int endHour = endDt.getHour();
int strMin = strDt.getMinute();
int endMin = endDt.getMinute();
Duration duration = Duration.between(strDt, endDt);
int durationMin = (int)duration.getSeconds() / 60;
List<Integer> minList = new ArrayList<>();
do {
// 같은 시간대
if (strHour == endHour) {
minList.add(endMin-strMin);
durationMin = 0;
}
// 남은 시간이 60분 이하라면
else if (durationMin < 60) {
minList.add(endMin);
durationMin = 0;
}
// 첫 데이터
else if (minList.size() == 0) {
minList.add(60-strMin);
durationMin -= (60-strMin);
}
// 나머지는 60분
else {
minList.add(60);
durationMin -= 60;
}
} while (durationMin > 0);
int minIdx = 0;
for (int idx=strHour ; idx<=endHour ; idx++ ) {
ReportDayDataVo tmp = dayDataList.get(idx);
tmp.setActivitySec(tmp.getActivitySec() + minList.get(minIdx));
minIdx++;
}